【问题标题】:C# .net core WEB-API "proxy" file downloadC# .net core WEB-API“代理”文件下载
【发布时间】:2021-05-05 12:58:18
【问题描述】:

我有一个角度前端(带有一个 pdf 查看器)和一个 C# .net 核心 API。

.net 核心 API 正在下载文件(从内部 API),然后将此文件提供给角度 pdf 查看器(如代理)。 它工作正常,但加载时间很长,因为后端下载整个文件然后将其提供给前端。 有没有办法在 api 中检索文件并同时将这些部分传递到前端?

那么将文件分块读入内存流,同时提供给前端?

当前的实现:

WebClient webClient = new WebClient();
webClient.Headers.Add("Authorization", "Basic xxxxx");
var file = webClient.DownloadData("http://xxxx/" + id + "/pdf");
Stream stream = new MemoryStream(file);
return new FileStreamResult(stream, "application/pdf");

【问题讨论】:

    标签: c# angular .net-core asp.net-core-webapi


    【解决方案1】:

    您的问题是 DownloadData 在下载整个文件之前不会继续。试试这个来流式传输数据

    WebClient webClient = new WebClient();
    webClient.Headers.Add("Authorization", "Basic xxxxx");
    var stream = webClient.OpenRead("http://xxxx/" + id + "/pdf");
    return new FileStreamResult(stream, "application/pdf");
    

    【讨论】:

    • 效果很好。谢谢!
    猜你喜欢
    • 2021-01-20
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多