我想使用 ASP.Net 中的自定义处理程序将文件写回客户端,并想知道用最少的处理时间来执行此操作的最佳方法是什么。目前我有 2 个不同版本的代码做同样的事情,但是因为处理程序会被大量使用,我想知道最有效的方法是什么。
将完整文件加载到字节数组并用于BinaryWrite
写入文件:
string filePath = context.Server.MapPath(context.Request.Url.LocalPath);
Byte[] swfFile = File.ReadAllBytes(filePath);
context.Response.AppendHeader("content-length", Utils.MakeString(swfFile.Length));
context.Response.ContentType = Utils.GetMimeType(Path.GetExtension(filePath));
context.Response.BinaryWrite(swfFile);
使用FileInfo
对象确定文件长度并TransmitFile
写入文件:
string filePath = context.Server.MapPath(context.Request.Url.LocalPath);
FileInfo fileInfo = new FileInfo(filePath);
context.Response.AppendHeader("content-length", Utils.MakeString(fileInfo.Length));
context.Response.ContentType = Utils.GetMimeType(Path.GetExtension(filePath));
context.Response.TransmitFile(filePath);
我怀疑该TransmitFile
方法是最有效的,因为它在不缓冲文件的情况下写入。FileInfo
对象呢?它如何计算文件大小?对象是FileInfo
最好的方法还是有更好的方法?