web-dev-qa-db-fra.com

Comment ouvrir l'URL Blob sur Chrome iOS

Je voudrais ouvrir l'objet Blob dans une fenêtre de navigateur.

Ce code fonctionne partout mais iOS Chrome (et IE bien sûr mais je peux résoudre IE). La fenêtre n'est pas redirigée vers l'url (qui est correcte ou au moins les mêmes que dans les autres navigateurs.) Existe-t-il une solution connue pour Chrome iOS?

var blob = new window.Blob(['Hello, world!'], {type: 'text/plain;charset=utf-8'});
window.URL = window.URL || window.webkitURL;
var url = window.URL.createObjectURL(blob);
window.location.href = url;

J'ai essayé <a href="{blobUrl}> au lieu de window.location.href mais ça ne marche pas non plus.

20
daerin

FileReader a résolu mon problème.

var reader = new FileReader();
var out = new Blob([this.response], {type: 'application/pdf'});
reader.onload = function(e){
  window.location.href = reader.result;
}
reader.readAsDataURL(out);
31
daerin

FileReader.readAsBinaryString la méthode est obsolète.

Un peu tard, mais j'ai dû faire quelque chose de similaire en utilisant FileReader.readAsDataURL - qui produit un dataUrl. J'utilise le service AngularJS $ http pour appeler l'API pour créer un pdf. J'espère que cela vous aidera, voir ci-dessous:

$http.post('/api/pdf', {id: '123'}, {responseType: 'arraybuffer'})
    .success(function (response) {
        var blob = new Blob([response.data], {type: 'application/pdf'});
        var reader = new FileReader();
        reader.onloadend = function(e) {
             $window.open(reader.result);
        }
        reader.readAsDataURL(blob);
    });
7
keano