MS Edge上的下载文件名无效

时间:2016-05-11 10:55:16

标签: javascript microsoft-edge

我遇到了MS Edge 20.10240.16384.0的问题(最新版本有相同的错误)。 我正在尝试用JS下载文件(清除JS,我没有机会使用任何库)。这是我这样做的方式:

window.open(url);

其中url变量是我要下载的文件的URL。打开该URL会立即导致文件下载。问题是下载的文件没有扩展名,其名称似乎是

'=_UTF-8_B_dGVzdEZpbGVOYW1lLV9kc2FkLnBkZg==_='

原始文件名为'test.pdf',我的方法适用于Chrome,Firefox和IE11。 有没有解决方案?

感谢。

2 个答案:

答案 0 :(得分:1)

花了我几个小时的时间,发现如果文件名带有'£'字符,则该文件将以txt格式下载,并以随机字符作为文件名。

在API中添加了代码,以将“£”替换为“ GBP”作为文件名。 文件下载现在可以正常工作了。

奇怪的是,我对照System.IO.File类提供的Path.InvalidPathChar()列表检查所有字符。但是,“£”会引发错误。这也是为什么我无法立即解决问题的原因,因为我知道“£”是允许使用的字符。

文件下载已通过ASP.Net MVC WebApi测试。 IE和Edge都继续失败,但是Chrome和Mozilla可以正常工作。

答案 1 :(得分:0)

以某种方式修复MS Edge中的错误。我们可以做这样的蠢事。

enter image description here

我不了解您服务器的编程语言。所以我只是给你发一个流程图给你实现它。

这是客户端代码: (对不起,我使用了库(jQuery))

var uid = "12093ujdskf3";
var url;
$.ajax({
  dataType: "json",
  url: "http://www.example.com/download.jsp",
  data: {
    uid: uid
  },
  error: function(){
    url = null;
  },
  success: function(data){
    url = data.url;
  }
});
if (url == null){
  alert("Error occurred!");
  return;
}
window.open(url);