【发布时间】:2023-03-20 23:37:01
【问题描述】:
我正在使用 Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.HtmlEncode(FileName));为用户弹出一个“打开/保存文件”对话框,以便他们可以将文件下载到本地计算机上。
这在 IE7 中正常工作,但在 IE6 上,当用户单击“打开/保存文件”对话框中的打开按钮时,文件未打开。我上网查了一下,发现 Response.AddHeader("Content-Disposition", "inline; filename="+Server.HtmlEncode(FileName)); 应该提供在 IE6 中工作,并且工作正常..
但问题是大多数可以在浏览器中打开的文件都在页面本身上打开.. 即用户在邮件页面上并单击下载它在那里打开的图像文件,我需要它在另一个窗口中打开,如IE7 的情况下我该怎么办...无法在 Bowser 中打开的其他文件使用系统中的当前应用程序打开,即(word、excel 等)..
请建议一种方法,让两个 IE 都使用相同的代码...我使用的代码在这里....
Response.AddHeader("Content-Disposition", "attachment; filename=" +FileName);
Response.AddHeader("Content-Length", file.Length.ToString());
Response.ContentType = ReturnExtension(file.Extension.ToLower());
Response.TransmitFile(file.FullName);
Response.End();
private string ReturnExtension(string fileExtension)
{
switch (fileExtension)
{
case ".txt":
return "text/plain";
case ".doc":
return "application/ms-word";
case ".xls":
return "application/vnd.ms-excel";
case ".gif":
return "image/gif";
case ".jpg":
case "jpeg":
return "image/jpeg";
case ".bmp":
return "image/bmp";
case ".wav":
return "audio/wav";
case ".ppt":
return "application/mspowerpoint";
case ".dwg":
return "image/vnd.dwg";
default:
return "application/octet-stream";
}
}
【问题讨论】:
-
为什么要对文件名进行 HTML 编码? HTTP 标头不是 HTML。
-
是一个错误,我已将其删除,但它并没有解决问题..
-
我从你的部分问题中得到了我的解决方案,谢谢:)