Можно ли загрузить файл BLOB-объектов в Edge на iOS? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь поддержать загрузку файла из API в Edge на iOS. Файл загружается в виде большого двоичного объекта, и у нас уже есть решения для загрузки в Safari и Chrome (с использованием createObjectUrl и readAsDataUrl соответственно), но ни один из них, похоже, не работает на Edge в iOS.

Я не могу найти в Интернете ничего о том, как это сделать, и даже FileReader, похоже, не поддерживает это.

Я пытался загрузить, используя решения, которые работают последовательно в Chrome на iOS и Safari на iOS.

Редактировать: Edge в iOS использует движок рендеринга Safari, поэтому любые решения, ориентированные на IE11 или Edge on Desktop, здесь не будут работать.

1 Ответ

0 голосов
/ 28 января 2019

В браузере IE / Edge вы можете попробовать использовать метод window.navigator.msSaveOrOpenBlob для загрузки файла. Вы можете проверить эти статьи: нить 1 и статья 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}
}
...