gpt4 book ai didi

asp.net - 使用内容配置附件和非常长的文件名时无法从 IE 打开文件

转载 作者:行者123 更新时间:2023-12-02 01:46:20 25 4
gpt4 key购买 nike

我使用非常简单的代码从 ASP .NET 网络应用程序下载文件。当文件名长度为 134 个符号或更多时,问题出在 Internet Explorer 中。显示标准对话框(“是否要从本地主机打开或保存 123456789012345678901234567890123456....pdf?”)。但是当点击“打开”按钮时没有任何反应。没有问题,当文件名长度较短时,即 133。

我的代码:

string fileName = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.pdf";
byte[] fileData = File.ReadAllBytes(Server.MapPath("~/document.pdf"));

Response.Clear();
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
Response.OutputStream.Write(fileData, 0, fileData.Length);
Response.Flush();
Response.End();

最佳答案

Chrome 足够智能,可以在完整路径超过 251 个字符时截断文件名。在 Windows 上,Chrome 默认保存到 C:\users\<username>\Downloads,这样可以生成更大的文件。

IE 11 的做法是直接跳过打开/保存点击,让取消成为你唯一有效的选择,而不通知用户原因。 IE 阻止更长的文件名,因为它保存到一个已经很长的路径 C:\Users\<username>\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.IE5\XXXXXXXX

方法#1:服务器端截断

如果您可以控制 HTTP 响应中的附件文件名,并且客户端是 IE,您应该将附件文件名截断为一些 MAX # of chars(考虑到默认 IE 保存位置)。

const int MaxFilenameLength = 140;
string fileName = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890.pdf";
bool isIEBrowser = Request.Browser.Browser == "IE" || Request.Browser.Browser == "InternetExplorer";
if (fileName.Length > MaxFilenameLength && isIEBrowser)
fileName = fileName.Substring(0, MaxFilenameLength);
\\...
Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
\\...

方法#2:客户端默认保存路径

如果您无法控制服务器,则需要将 IE 中的默认保存位置更改为较短的路径,也许使用 Chrome 使用的路径 --> C:\users\<username>\Downloads 。转到 IE Internet 选项-->设置-->移动文件夹...

enter image description here

MS IE 团队需要修复此错误,因为用户只能猜测要做什么。对我来说,这是一个客户端 (IE 11) 问题。

关于asp.net - 使用内容配置附件和非常长的文件名时无法从 IE 打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25504675/

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