У меня есть каталог «Загрузки», где у меня есть статические файлы, которые могут загрузить наши клиенты. Я использую следующие действия ActionLink для вызова файла:Обратное сообщение, если файл загрузки не найден с использованием FileStreamResult
@Html.ActionLink("Download Example", "Download", new { area = "", controller = "Common", fileName = "SomeFile.xlsx" })
, который вызывает «Common» контроллер и возвращает файл, используя код ниже:
public FileStreamResult Download(string fileName)
{
var filePath = Server.MapPath("~/Download/" + fileName);
var ext = Path.GetExtension(fileName);
switch (ext)
{
case ".xlsx":
return new FileStreamResult(new FileStream(filePath, FileMode.Open),
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
case ".xls":
return
new FileStreamResult(
new FileStream(Server.MapPath("~/Download/" + fileName), FileMode.Open),
"application/vnd.ms-excel");
case ".pdf":
return
new FileStreamResult(
new FileStream(Server.MapPath("~/Download/" + fileName), FileMode.Open),
"application/pdf");
}
return null;
}
}
Мой вопрос заключается в том, что, так как я не являюсь вернув представление, как я могу вернуть сообщение в представление, чтобы показать, нет ли файла (404)?
я понял, это много:
if (!System.IO.File.Exists(filePath))
{
}
, но я понятия не имею о том, что вернуться, чтобы избежать 404 редирект. Я хочу вернуть сообщение «Файл не найден» или что-то подобное на странице, а не перенаправить страницу на страницу ошибки 404.
404 не является перенаправлением - это просто ошибка «не найдена». Разумеется, это наиболее подходящий ответ, если файл, который вы пытаетесь извлечь, не существует. Не совсем понятно, что вы спрашиваете. –
Я хочу вернуть сообщение «Файл не найден» или что-то подобное, а не перенаправление страницы на страницу ошибки 404. – New2ASPMVC
Мне не совсем понятно, что вы имеете в виду. Какой код ответа HTTP вы ожидаете вернуться? Если это ничего, кроме 404, я бы сказал, что это плохая идея. –