gpt4 book ai didi

asp.net - ASP .net 6 通过 httpclient 下载文件 - 流问题

转载 作者:行者123 更新时间:2023-12-05 05:42:10 26 4
gpt4 key购买 nike

我正在创建 Blazor 服务器应用程序。我将外部文件存储与 RestAPI 结合使用。我想创建下载按钮以从存储中获取文件。这看起来很容易,但不一定。

我从文件存储中下载 HttpContent

        var request = new HttpRequestMessage(HttpMethod.Get, _url);
request.Headers.Add("auth-token", token);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/octet-stream"));
HttpResponseMessage response = await _Http.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();
var content = response.Content;

接下来我照这个教程做https://learn.microsoft.com/en-us/aspnet/core/blazor/file-downloads?view=aspnetcore-6.0

        var fileStream = content.ReadAsStream();
using (var streamRef = new DotNetStreamReference(fileStream))
{
await JS.InvokeVoidAsync("downloadFileFromStream", "file.txt", streamRef);
}

对于小文件一切都很好。但是如果我尝试下载大文件(100mb),算法首先将文件下载到服务器的内存(RAM),然后保存在客户端的本地磁盘上。

在理想世界中,我梦想当我点击按钮下载时,来自外部存储的文件将在延迟后(带有进度条)下载,就像来自 http 服务器的物理文件(无流缓冲区),例如https://www.example.com/file.txt .当然是通过我的 BlazorServer 应用程序进行授权和身份验证,以及整个 neccesery 服务。

最佳答案

我有办法。

  1. 创建服务以服务 File Storage API
  2. 创建 Controller 以避免跨源错误
  3. 使用微软教程创建下载按钮https://learn.microsoft.com/en-us/aspnet/core/blazor/file-downloads?view=aspnetcore-6.0

关于asp.net - ASP .net 6 通过 httpclient 下载文件 - 流问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72106331/

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