MS Edge 上下载的文件名无效

Invalid downloaded file name on MS Edge

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

window.open(url);

其中 url 变量是 URL 我要下载的文件。打开 URL 立即导致文件下载。问题是下载的文件没有扩展名,它的名字看起来像

'=_UTF-8_B_dGVzdEZpbGVOYW1lLV9kc2FkLnBkZg==_='

原始文件名为'test.pdf',我的方法在Chrome、Firefox 和IE11 上完美运行。 有什么解决办法吗?

谢谢。

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

我不知道你们服务器的编程语言。所以我只是 post 给你一张流程图,供你实施。

这是一个客户端代码: (不好意思我用了一个库(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);

我花了好几个小时才发现,如果文件名包含“£”字符,则文件将下载为 txt 格式,文件名为随机字符。

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

奇怪的是,我根据 System.IO.File class 提供的 Path.InvalidPathChar() 列表检查所有字符。然而 '£' 会抛出一个错误。这也是我无法立即解决问题的原因,因为我知道“£”是允许的字符。

使用 ASP.Net MVC WebApi 测试文件下载。 IE 和 Edge 一直失败,但 Chrome 和 Mozilla 可以正常工作。