为什么停止下载后我的内存使用量会激增

问题描述 投票:0回答:1

我使用fileStreamResult实现下载大文件,它返回一个流到前端,并使用streamSaver接收流并写入前端的loacl文件。但是当我暂停下载时,谷歌浏览器内存使用量激增然后崩溃。我该如何修复它,提前谢谢。

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

//我在下载文件时使用这些代码,前端使用streamSaver(github中的StreamSaver.js)接收流,当我暂停下载时,浏览器内存爆炸,任何人都可以帮助我,非常感谢! 后端:

public async Task<IActionResult> Download() {
     
        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();
© www.soinside.com 2019 - 2024. All rights reserved.