1
我有一個目錄「Downloads」,其中有我們的客戶可以下載的靜態文件。我現在用的是下面的ActionLink的調用文件:當使用FileStreamResult找不到下載文件時返回消息
@Html.ActionLink("Download Example", "Download", new { area = "", controller = "Common", fileName = "SomeFile.xlsx" })
是所謂的「通用」控制器和使用下面的代碼返回文件:
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不是重定向 - 它只是一個「未找到」的錯誤。當然,如果你正在嘗試獲取的文件不存在,這是最合適的迴應。真的不清楚你在問什麼。 – 2015-04-03 00:17:59
我想返回一個消息「文件未找到」或類似的東西,而不是頁面重定向到404錯誤頁面。 – New2ASPMVC 2015-04-03 00:21:44
我不清楚你的意思。您希望返回哪個HTTP響應代碼?如果它不是404,我會說這是個壞主意。 – 2015-04-03 00:27:16