对于大文件的输出
不要使用Response.WriteFile
你的内存会被耗尽的
string filePath = "xxxx.pdf";
string FullFileName = Server.MapPath(filePath);
if (File.Exists(FullFileName))
{
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filePath, System.Text.Encoding.UTF8));
BinaryReader br = new BinaryReader(File.OpenRead(FullFileName));
BinaryWriter bw = new BinaryWriter(Response.OutputStream);
byte[] buffer = new byte[1024];
int i = 1024;
while (i == 1024)
{
i = br.Read(buffer, 0, i);
bw.Write(buffer, 0, i);
}
br.Close();
bw.Close();
return;
}
文件不大的情况下可以用WRITEFILE方法
string FileName = "xxxx.pdf";
string FullFileName = Server.MapPath(FileName); //FileName--要下载的文件名
FileInfo DownloadFile = new FileInfo(FullFileName);
if (DownloadFile.Exists)
{
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream ";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8));
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
else
{
//文件不存在
}
浙公网安备 33010602011771号