gpt4 book ai didi

c# - 使用 FileStreamResult 找不到下载文件时返回消息

转载 作者:行者123 更新时间:2023-11-30 20:44:24 24 4
gpt4 key购买 nike

我有一个目录“下载”,其中有我们的客户可以下载的静态文件。我正在使用以下 ActionLink 调用文件:

@Html.ActionLink("Download Example", "Download", new { area = "", controller = "Common", fileName = "SomeFile.xlsx" })

调用“通用” Controller 并使用以下代码返回文件:

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;
}
}

我的问题是,由于我不返回 View ,如果文件不存在 (404),我如何向 View 返回消息以显示?

我想通了:

 if (!System.IO.File.Exists(filePath))
{

}

但我不知道要返回什么以避免 404 重定向。我想在页面中返回一条消息“未找到文件”或类似内容,而不是将页面重定向到 404 错误页面。

最佳答案

我建议您将返回类型设置为基本 ActionResult 而不是 FileStreamResult,这样您就可以灵活地处理这个问题。

  1. 您可以重定向到您的自定义方法,然后您可以从中提供正确的消息/ View 。
  2. 通过异常和配置文件句柄 404 使用您的自定义错误文件。 (抛出新的 HttpException(404,“未找到”);)

希望这能解决您的问题。

关于c# - 使用 FileStreamResult 找不到下载文件时返回消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29424517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com