如何在Chrome iOS上打开Blob网址

dae*_*rin 20 javascript google-chrome ios

我想在浏览器窗口中打开Blob对象.

这个代码可以在任何地方工作,但iOS Chrome(和IE当然,但我可以解决IE).窗口未重定向到URL(这是正确的或至少与其他浏览器相同).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;
Run Code Online (Sandbox Code Playgroud)

我试过<a href="{blobUrl}>而不是window.location.href但它也不起作用.

dae*_*rin 32

FileReader解决了我的问题.

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);
Run Code Online (Sandbox Code Playgroud)


kea*_*ano 7

FileReader.readAsBinaryString方法已被弃用.

有点迟了,但是我使用FileReader.readAsDataURL做了类似的事情- 它产生了一个dataUrl.我正在使用AngularJS $ http服务来调用API来创建pdf.希望这会有所帮助,见下文:

$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);
    });
Run Code Online (Sandbox Code Playgroud)