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
相关产品推荐
相关产品推荐

