在ASP.NET4.0,IE8,winXP下,如下代码: protected void DownloadFile(string fileName, string saveFileName)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileName);
Response.Clear();
Response.AddHeader(DString.CONTENT_DIS, string.Format(DString.EXCLE_NAME, saveFileName));
Response.AddHeader(DString.FILE_LENGTH, fileInfo.Length.ToString());
Response.ContentType = DString.EXCLE_MINI;
Response.WriteFile(fileInfo.FullName); Response.End();
} protected void btn_Download_Click(object sender, EventArgs e)
{
string fileName;
string saveFile;
fileName = MapPath(DString.EVALUATION_FILE_PATH);
CreateScoreEvaluation(fileName);
saveFile = "质量分析表";
DownloadFile(fileName, saveFile);
}发现无法正常下载,该项目中有好几处下载都是使用同一段下载代码,但有的能正常下载,有的却不能,报错:“无法打开xxx.aspx站点”,试着安装迅雷,发现,会自动打开迅雷下载,而且能成功下载,实在搞不起清楚是咋回事,我不能要求客户都安装迅雷,所以请高手帮助,谢谢!貌似在win7+IE9下没有此问题
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(fileName);
Response.Clear();
Response.AddHeader(DString.CONTENT_DIS, string.Format(DString.EXCLE_NAME, saveFileName));
Response.AddHeader(DString.FILE_LENGTH, fileInfo.Length.ToString());
Response.ContentType = DString.EXCLE_MINI;
Response.WriteFile(fileInfo.FullName); Response.End();
} protected void btn_Download_Click(object sender, EventArgs e)
{
string fileName;
string saveFile;
fileName = MapPath(DString.EVALUATION_FILE_PATH);
CreateScoreEvaluation(fileName);
saveFile = "质量分析表";
DownloadFile(fileName, saveFile);
}发现无法正常下载,该项目中有好几处下载都是使用同一段下载代码,但有的能正常下载,有的却不能,报错:“无法打开xxx.aspx站点”,试着安装迅雷,发现,会自动打开迅雷下载,而且能成功下载,实在搞不起清楚是咋回事,我不能要求客户都安装迅雷,所以请高手帮助,谢谢!貌似在win7+IE9下没有此问题
if (!File.Exists(Server.MapPath(DownAdress)))
{
Response.Write("下载的文件不存在!");
Response.End();
return;
}
using (FileStream fso = new FileStream(Server.MapPath(DownAdress), FileMode.Open,FileAccess.ReadWrite,FileShare.Inheritable))
{
string[] filename=DownAdress.Split(new char[]{'/'});
int len = Convert.ToInt32(fso.Length);
byte[] FileObj = new byte[len];
fso.Read(FileObj, 0, len);
Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", HttpUtility.UrlEncode(filename[filename.Length - 1]), System.Text.Encoding.UTF8));
Response.AddHeader("Content-Length", len.ToString());
Response.ContentType = "application/octet-stream";
Response.Charset = "UTF-8";
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.BinaryWrite(FileObj);
Response.Flush();
Response.Clear();
fso.Close();
}
Response.ContentType = DString.EXCLE_MINI;这分别是什么值?
另外在 Response.End(); 前 你可以写 Response.Flush();