You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor报错:未找到'downloadFileFromStream'方法,求解决方案

解决Blazor调用downloadFileFromStream未定义的问题

你遇到的错误核心是项目中缺少对应的JavaScript函数实现,以下是具体解决步骤:

1. 添加downloadFileFromStream JavaScript函数

在项目的wwwroot目录下创建或修改script.js文件,添加以下代码:

async function downloadFileFromStream(fileName, streamRef) {
    const arrayBuffer = await streamRef.arrayBuffer();
    const blob = new Blob([arrayBuffer]);
    const url = URL.createObjectURL(blob);
    
    const anchorElement = document.createElement('a');
    anchorElement.href = url;
    anchorElement.download = fileName;
    anchorElement.click();
    
    URL.revokeObjectURL(url);
    anchorElement.remove();
}

2. 确保JavaScript文件被正确引用

  • Blazor Server项目:在Pages/_Layout.cshtml文件的</body>标签前添加引用(需放在Blazor自带脚本之后):

    <script src="_framework/blazor.server.js"></script>
    <script src="script.js"></script>
    
  • Blazor WebAssembly项目:在wwwroot/index.html文件的</body>标签前添加引用(需放在Blazor自带脚本之后):

    <script src="_framework/blazor.webassembly.js"></script>
    <script src="script.js"></script>
    

3. 可选:优化C#代码的流处理

如果_ftpService.DownloadTrack支持异步方法,建议改为异步调用避免阻塞线程:

private async Task<Stream> GetFileStreamAsync(Track track)
{
    return await _ftpService.DownloadTrackAsync(track);
}

private async Task DownloadFileFromStream(Track track)
{
    var fileStream = await GetFileStreamAsync(track);
    var fileName = track.Title;

    var streamRef = new DotNetStreamReference(stream: fileStream);

    await _js.InvokeVoidAsync("downloadFileFromStream", fileName, streamRef);
}

内容的提问来源于stack exchange,提问作者Rewon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 22:05:28