相关疑难解决方法(0)

Safari / iOS中“下载”属性的替代方法

我有一个用base64创建的Blob,我需要将此数据下载为pdf。

我创建了以下代码段:

    var blob = new Blob([byte]);
    var link = document.createElement('a');

    link.href = window.URL.createObjectURL(blob);
    link.target = '_blank';
    var fileName = name + '.pdf';
    link.download = fileName;
    link.click();
Run Code Online (Sandbox Code Playgroud)

它适用于所有浏览器,但iOS上的safari mobile除外。

该文件实际上已下载,但名称为“未知”,由于扩展名丢失,因此无法打开。

问题在于,下载属性缺少对此浏览器和IE的支持。

IE有很多解决方法,但我没有在Safari / iOS中找到任何解决方法。

您知道如何在此浏览器中下载从base64(不涉及XHR)获得的Blob吗?

谢谢

html javascript safari download ios

18
推荐指数
3
解决办法
954
查看次数

iPhone Chrome浏览器中的BLOB对象未下载文件

我正在尝试使用ajax调用从服务器(jsp)下载pdf文件,我从服务器获取Base 64格式的数据,然后将其转换为ArrayBuffer,然后使用blob对象下载,以下代码对每种浏览器都适用,除了iPhone中的Chrome甚至iPhone的Safari中都可以正常使用,我不知道这是什么问题,对此的任何帮助将不胜感激

function hello(id)
    {
    //alert(id);

    //alert(id);
    var ln="en";
                $.ajax({
                  type:'post',
                 url:'ajaxurl',
                  data:{lang:ln,num_srno:id},
                  success:function(data){
                  //alert(data);

                /*  var bytes = new Uint8Array(data); // pass your byte response to this constructor

    var blob=new Blob([bytes], {type: "application/pdf"});// change resultByte to bytes

    var link=document.createElement('a');
    link.href=window.URL.createObjectURL(blob);
    link.download="myFileName.pdf";
    link.click();*/
    var sampleArr = base64ToArrayBuffer(data);
    saveByteArray("Sample Report", sampleArr);

                      }

                    });
    }

    function base64ToArrayBuffer(base64) {
        var binaryString = window.atob(base64);
        var binaryLen = binaryString.length;
        var bytes = new Uint8Array(binaryLen);
        for (var i = 0; i < binaryLen; i++) {
           var …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-chrome blob ios

7
推荐指数
1
解决办法
4070
查看次数

标签 统计

ios ×2

javascript ×2

blob ×1

download ×1

google-chrome ×1

html ×1

jquery ×1

safari ×1