I an using the following codes to implements download a large file,it return a stream to the front-end,and using streamSaver to recieve the stream and write to the loacl file in the front-end.
后端:
公共异步任务下载(){
var path = "D:\\backend-fileupload\\test.rar";
var newstream = System.IO.File.OpenRead(path);
var size = newstream.Length;
HttpContext.Response.Headers.Add("Content-Length",size.ToString());
return new FileStreamResult(newstream, "application/octet- stream");
}
前端:
const name = "test.rar"
const fileStream = streamSaver.createWriteStream(name, {
size: Number(res.headers.get("Content-Length")) })
const readableStream = res.body;
if (window.WritableStream && readableStream?.pipeTo) {
return readableStream.pipeTo(fileStream).then(() => {
console.log('done writing...')
})
}
const writer = fileStream.getWriter();
const reader = readableStream?.getReader();
const pump: any = () =>
reader?.read()
.then(res => res.done ? writer.close() :
writer.write(res.value).then(pump));
pump();
但是当我暂停下载时,谷歌浏览器内存使用量激增然后崩溃。我该如何修复它?预先感谢。
A GitHub Gist 提供了如何在 Java 中暂停和恢复 HTTP 连接下载的示例。 Stack Overflow 帖子讨论了如何使用 C# 在 ASP.NET 中使文件下载可恢复。 超级用户帖子解释了可暂停下载的工作原理以及 HTTP 1.1 协议如何在标头中包含一个名为“Range”的字段,该字段允许请求指定所请求响应的字节偏移量和长度。 另一篇 Stack Overflow 帖子提供了如何使用 C# 中的进度条异步下载文件的示例。我希望这有帮助!