Blazor 从 URL 下载 Azure Blob

Posted

技术标签:

【中文标题】Blazor 从 URL 下载 Azure Blob【英文标题】:Blazor Download Azure Blob from URL 【发布时间】:2021-10-29 15:55:19 【问题描述】:

我有一个 Blazor“下载按钮”组件,它将从我的 API 中获取一个 URI,其中包含 Azure Blob 存储中 Blob 的绝对 URI。从 API 返回 URI 后,我会调用一个 JS 函数来创建您看到的 a href。当单击 a href 文件时,文件被打开而不是被下载。有谁知道我做错了什么?

JS 代码:我在我的组件中使用 JS 隔离

export function Download(url, fileName) 
    let a = document.createElement('a');
    a.href = url;
    a.download = fileName;
    document.body.appendChild(a);

产生一个href

<a href="https://myBlobStorage.blob.core.windows.net/filePath.txt?sv=sharedAccessToken" download="FileName.txt"></a>

谢谢你, 特拉维斯佩特里

【问题讨论】:

我能够正确下载文件。我用的是 Chrome 浏览器。你用的是哪个浏览器? @GauravMantri 我正在使用 FireFox。我会在 chrome 中尝试一下。 @GauravMantri 我也试过 Chrome 和 Edge 他们只打开 .txt 文件。 【参考方案1】:

我最终使用 Blazor 库从服务器下载文件流。

图书馆:https://github.com/arivera12/BlazorDownloadFile

我更改了我的服务器以返回文件响应:

return File(blob.DownloadStreaming().Value.Content, blob.GetProperties().Value.ContentType);

然后在 Blazor 中调用下载代码:

var resp = await _httpClient.GetAsync($"URL");
await BlazorDownloadFileService.DownloadFile("test.txt", await resp.Content.ReadAsByteArrayAsync(), resp.Content.Headers.ContentType.ToString());

【讨论】:

以上是关于Blazor 从 URL 下载 Azure Blob的主要内容,如果未能解决你的问题,请参考以下文章

使用 FILE STORAGE AZURE 将文件下载为字节数组

Azure 静态 Web 应用 Blazor WASM .Net Core API 和标识 - 无法从“_configuration”加载设置

Azure 存储 Blob CORS 错误

CORS错误Azure函数与B2C-Blazor

多个 Blazor 应用程序,相同的托管。从第一个应用程序重定向到第二个应用程序。 Azure 应用服务

Blazor 项目在本地构建,但不在 azure 管道中