为什么停止下载后我的内存使用量突然增加?

问题描述 投票:0回答:1
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();

但是当我暂停下载时,谷歌浏览器内存使用量激增然后崩溃。我该如何修复它?预先感谢。

reactjs asp.net asp.net-core memory-leaks download
1个回答
0
投票

A GitHub Gist 提供了如何在 Java 中暂停和恢复 HTTP 连接下载的示例。 Stack Overflow 帖子讨论了如何使用 C# 在 ASP.NET 中使文件下载可恢复。 超级用户帖子解释了可暂停下载的工作原理以及 HTTP 1.1 协议如何在标头中包含一个名为“Range”的字段,该字段允许请求指定所请求响应的字节偏移量和长度。 另一篇 Stack Overflow 帖子提供了如何使用 C# 中的进度条异步下载文件的示例。我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.