首页 > 解决方案 > 一次请求内容下载两次

问题描述

我正在通过浏览器将大文件下载到客户端。当我启动下载内容时,会写入正文。我看到 chrome 向用户转移,他们看不到进度。 在此处输入图像描述

一旦完成传输并且以下方法完成,您就可以看到文件下载。这似乎是双重工作。

在此处输入图像描述

公共异步任务GetFile(字符串文件名,字符串文件令牌){

        Stream stream = null;
        int bufferSize = 1048576;
        byte[] buffer = new byte[bufferSize];
        int length;
        long lengthToRead;

        try
        {
            string filePath = Path.Combine(_env.WebRootPath, $"Common{Path.DirectorySeparatorChar}", $"Files{Path.DirectorySeparatorChar}", fileToken);

            stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
            long dj = stream.Length / bufferSize;
            if (stream.Length % bufferSize > 0)
            {
                dj += 1;
            }



            dj = dj * bufferSize;
            lengthToRead = stream.Length;

            Response.ContentType = "application/pdf";
            Response.Headers.Add("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
            Response.ContentLength = dj;

            while( lengthToRead > 0)
            {
                length = stream.Read(buffer, 0, bufferSize);

               await Response.BodyWriter.WriteAsync(buffer);

               await Response.BodyWriter.FlushAsync();

                lengthToRead = lengthToRead - length;


            }
        }
        catch(Exception exp)
        {
            Response.ContentType = "text/html";

        }
        finally
        {
            if(stream != null)
            {
                stream.Close();
            }
        }

    }

标签: c#api.net-core

解决方案


推荐阅读