gpt4 book ai didi

asp.net-mvc-3 - 带有重音符号的 ASP MVC3 FileResult + IE8 - 有问题吗?

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

如果文件名包含重音符号,则它在 Opera、FF、Chrome 和 IE9 中按预期工作。

但在 IE8 中文件类型是“未知文件类型”,并且显示“file”作为文件名(实际上是 URL 的最后部分)。

有人知道解决方法吗?除了替换文件名中的“特殊”字符之外?

测试代码:(文件|新建项目|添加 Controller )

public class FileController : Controller
{
public ActionResult Index(bool? Accents)
{
byte[] content = new byte[] { 1, 2, 3, 4 };

return File(content, "application/octet-stream", true.Equals(Accents) ? "dsaé.txt" : "dsae.txt");
}
}

像这样测试: http://localhost/file , 和 http://localhost/file?accents=true

编辑=>我的“解决方案”,如果有人感兴趣的话:

public class FileContentResultStupidIE : FileContentResult //yeah, maybe i am not totally "politically correct", but still...
{
public FileContentResultStupidIE(byte[] fileContents, string contentType) : base(fileContents, contentType) { }

public override void ExecuteResult(ControllerContext context)
{
var b = context.HttpContext.Request.Browser;
if (b != null && b.Browser.Equals("ie", StringComparison.OrdinalIgnoreCase) && b.MajorVersion <= 8)
{
context.HttpContext.Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + HttpUtility.UrlPathEncode(base.FileDownloadName) + "\"");
WriteFile(context.HttpContext.Response);
}
else
{
base.ExecuteResult(context);
}
}
}

最佳答案

尝试在 Controller 操作中添加以下行:

Response.HeaderEncoding = Encoding.GetEncoding("iso-8859-1");

您可以查看following blog post其中讨论了这些问题。不幸的是,没有一个适用于所有浏览器的通用解决方案。

关于asp.net-mvc-3 - 带有重音符号的 ASP MVC3 FileResult + IE8 - 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6943443/

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