【问题标题】:Show download progress in browser在浏览器中显示下载进度
【发布时间】:2017-02-15 06:20:03
【问题描述】:

我正在使用从 DropBox 下载 pdf 的功能,我正在使用 ASP.net Core ,一切正常。唯一的问题是,当您单击下载链接时,它不会显示任何消息并下载文件。我想显示下载进度,就像我们从 Internet 下载内容时通常发生的那样,我不希望出现任何对话框,只是为了显示文件已像 Chrome 或 IE 等任何浏览器中通常发生的那样下载,然后有选择“在文件夹中显示”之类的,我需要添加什么?

 public async Task DownloadPdf()
            {
                DropboxClient client2 = new DropboxClient("cU5M-a4exaAAAAAAAAABDVZsKdpPteNmwHslOeFEo-HByuOr4v4ONvXoAMCFyOXH");
                string folder = "MyFolder";
                string file = "Test PDF.pdf";
                using (var response = await client2.Files.DownloadAsync("/" + folder + "/" + file))
                {
                    using (var fileStream = System.IO.File.Create(@"C:\Users\User\Downloads\Test.pdf"))
                    {
                        (await response.GetContentAsStreamAsync()).CopyTo(fileStream);                    
                    }
                }
            }

【问题讨论】:

  • 参见此处stackoverflow.com/q/74019/5311735(内容处置标头)。
  • @Evk 唯一的问题是我使用的是 ASP.net Core,我们在 Core 中找不到命名空间 System.Wen,我怎么能在 Core 中做到这一点?
  • 我对asp.net core不熟悉,但是我觉得google如何在response中添加header并不难(这是非常基本的操作)。
  • 您是否尝试过导入 system.web 作为参考,如果它不作为标准/
  • @SimonPrice 我试过了,但我收到了这个错误: Net core only support referencing .net framework assemblies in this release. to reference other assemblies, they need to be included in a NuGet package and reference that package 。我正在努力解决

标签: c# html asp.net asp.net-core


【解决方案1】:

我有一个带有返回文件的 API 的 asp.net 核心项目:

[HttpGet("{id}")]
public IActionResult Get(int id) {
  byte[] fileContent = READ_YOUR_FILE();
  FileContentResult result = new FileContentResult(fileContent, "application/octet-stream") {
    FileDownloadName = id.ToString()
  };
  return result;
}

如果我在浏览器中访问此 API (myapp/api/mycontroller/id) 的 URL,那么我可以看到文件正在下载。

【讨论】:

    猜你喜欢
    • 2014-11-18
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2022-12-30
    • 2022-11-11
    • 1970-01-01
    • 2013-02-13
    相关资源
    最近更新 更多