gpt4 book ai didi

C# Response.WriteFile 与 Response.TransmitFile 文件大小问题

转载 作者:太空狗 更新时间:2023-10-29 18:28:23 25 4
gpt4 key购买 nike

我在服务器上有一个 5Mb 的 pdf 使用 writeFile 下载这个文件给我一个 15Mb 的下载,而 transmitfile 给出了正确的 5Mb 文件大小...

这是由于 writeFile 在服务器内存中的某种解压缩吗?只是想知道是否有人看到过同样的事情发生......

(ps是上iis7后才注意到的??)

代码是...

if (File.Exists(filepath))
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "application/octet-stream";
HttpContext.Current.Response.AddHeader("content-disposition","attachment;filename=\""+Path.GetFileName(filepath)+"\"");
HttpContext.Current.Response.AddHeader("content-length", new FileInfo(filepath).Length.ToString());

//HttpContext.Current.Response.WriteFile(filepath);
HttpContext.Current.Response.TransmitFile(filepath);

HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
}

最佳答案

TransmitFile - 将指定文件直接写入 HTTP 响应输出流,而不在内存中进行缓冲。

WriteFile - 将指定文件直接写入 HTTP 响应输出流。

我会说差异的发生是因为传输文件没有缓冲它。写入文件使用缓冲(Afiak),基本上是在传输数据之前临时保存数据,因此它无法猜测准确的文件大小,因为它是以 block 的形式写入的。

关于C# Response.WriteFile 与 Response.TransmitFile 文件大小问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2110660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com