使用Firefox中的URL下载文件,而不是在角度JS中工作

时间:2018-02-06 11:39:50

标签: javascript jquery angularjs

我的代码在谷歌浏览器中提供下载,在Firefox中它始终显示在新标签或自动标签中,如在Firefox中打开的XML文件,我该如何下载? 因此,请给我一些建议,以便在Firefox的角度JS或Java脚本中下载功能!  这是我试过的代码

var link = document.createElement('a');
link.setAttribute('href', url);
link.setAttribute('download', filename);

2 个答案:

答案 0 :(得分:4)

您正在创建的锚标记也需要添加到Firefox中的DOM中,以便在 axios({ method: 'get', url: file[0].preview, // blob url eg. blob:http://127.0.0.1:8000/e89c5d87-a634-4540-974c-30dc476825cc responseType: 'blob' }).then(function(response){ var reader = new FileReader(); reader.readAsDataURL(response.data); reader.onloadend = function() { var base64data = reader.result; self.props.onMainImageDrop(base64data) } }) 个事件中被识别。

click

答案 1 :(得分:1)

问题是,你必须使用javascript函数encodeURIComponent(URI)对url进行编码,就像Catalin lancu在我之前说的那样,将锚标记添加到DOM中。

这是我写回来下载文件的函数:

function downloadFile(content, filename, type){
  var a = document.createElement('a');
  a.href = type+','+encodeURIComponent(content);
  a.target = '_blank';
  a.download = filename;
  document.body.append(a);
  a.click();
  document.body.removeChild(a);
}

希望这有帮助。