是否可以在iOS的Edge中下载blob文件?

时间:2019-01-25 02:28:13

标签: javascript ios blob microsoft-edge

我正在尝试支持从iOS上的Edge中的API下载文件。该文件以blob格式下载,并且我们已经有了在Safari和Chrome上进行下载的解决方案(分别使用createObjectUrlreadAsDataUrl),但这些解决方案似乎都无法在iOS的Edge上运行。 / p>

关于如何执行此操作,我找不到任何在线内容,甚至FileReader似乎也不支持它。

我尝试使用在iOS上的Chrome和iOS上的Safari上都能正常运行的解决方案进行下载。

编辑:iOS上的Edge使用Safari的呈现引擎,因此任何IE11或Edge上针对桌面的解决方案在这里都无法使用。

1 个答案:

答案 0 :(得分:0)

在IE / Edge浏览器中,您可以尝试使用window.navigator.msSaveOrOpenBlob方法下载文件。您可以查看以下文章:thread 1article 1。像这样的代码:

showFile(blob){
  // It is necessary to create a new blob object with mime-type explicitly set
  // otherwise only Chrome works like it should
  var newBlob = new Blob([blob], {type: "application/pdf"})

  // IE doesn't allow using a blob object directly as link href
  // instead it is necessary to use msSaveOrOpenBlob
  if (window.navigator && window.navigator.msSaveOrOpenBlob) {
    window.navigator.msSaveOrOpenBlob(newBlob);
    return;
  } 

  // For other browsers: 
  // Create a link pointing to the ObjectURL containing the blob.
  const data = window.URL.createObjectURL(newBlob);
  var link = document.createElement('a');
  link.href = data;
  link.download="file.pdf";
  link.click();
  setTimeout(function(){
    // For Firefox it is necessary to delay revoking the ObjectURL
    window.URL.revokeObjectURL(data);
  , 100}
}