【问题标题】:Failed to download file using file stream使用文件流下载文件失败
【发布时间】:2020-02-04 06:11:49
【问题描述】:

如果我只是显示到 img 元素,我可以查看示例图像,我也可以使用属性对其进行流式传输,但下载完成时文件类型未知。

这里是我的控制器部分:

public IActionResult DownLoad(string param)
  {
      string webRootPath = _hostingEnvironment.WebRootPath;
      webRootPath = "//myServ01/folderA";
      var addrUrl = webRootPath + param;      
      var stream = System.IO.File.OpenRead(addrUrl);
      return File(stream, "application/force-download", param);
  }

这是在 img 中显示的 html 调用和要下载的 clickable 属性:

<img src="/File/Download?param=sample.png"><br>
<a id="download_link" href="/File/Download?param=sample.png">Download File</a>

我可以打开下载的文件,但需要手动打开绘图或图像编辑器,这是图像的虚拟快照,这只是我实际文件中的示例文件名:

【问题讨论】:

    标签: c# ajax asp.net-mvc


    【解决方案1】:

    application/force-download 不是标准的 MIME 类型。为您使用的任何媒体使用正确的 mime 类型(例如,用于 mp3 的音频/mpeg)。

    您也可以尝试指定通用的application/octet-stream MIME 类型。

    要获取 MIME 类型,您还可以使用静态类 System.Net.Mime.MediaTypeNames。例如。要使用通用 MIME 类型,您可以使用 System.Net.Mime.MediaTypeNames.Application.Octet

    【讨论】:

    • 我应该用文件类型替换强制下载吗?你有图片、xlsx、pdf 的来源吗,所以如果我得到这个文件扩展名,我可以添加一个案例条件
    • 由于您有各种文件,我建议使用帖子中提到的通用文件
    • 我明白了!欣赏它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多