zoukankan      html  css  js  c++  java
  • 解决new file()在IOS下不兼容问题

    先看一下file的浏览器兼容问题

     解决方法

    将base64转成Blob再上传

    dataURLtoFile(dataurl, filename) {
        //转成blob
        function dataURLtoBlob(toDataURL) {
            var arr = toDataURL.split(","),
                mime = arr[0].match(/:(.*?);/)[1],
                bstr = atob(arr[1]),
                n = bstr.length,
                u8arr = new Uint8Array(n);
            while (n--) {
                u8arr[n] = bstr.charCodeAt(n);
            }
    
            var blob = null;
    
            // 解决低版本浏览器没有new Blob()问题
            try {
                blob = new Blob([u8arr], { type: mime });
            } catch (e) {
                var BlobBuilder = window.BlobBuilder = (
                    window.BlobBuilder ||
                    window.WebKitBlobBuilder ||
                    window.MozBlobBuilder ||
                    window.MSBlobBuilder
                );
    
                if (e.name === "TypeError" && BlobBuilder) {
                    var builder = new BlobBuilder();
                    builder.append(u8arr);
                    blob = builder.getBlob(mime);
                }
            }
    
            return blob;
        } 
    
        //转成file
        function blobToFile(Blob, fileName) {
            Blob.lastModifiedDate = new Date();
            Blob.name = fileName;
            return Blob;
        }
    
        // 调用如下
        let bold = dataURLtoBlob(dataurl);
        let file = blobToFile(bold, "fileName");
        
        // 上传file就可以了
        return file;
    }
    // ...
    // 案例是截取视频第一帧图片
    // file是视频文件
    var imgFile = that.dataURLtoFile(
        canvas.toDataURL("image/png"),
        file.name.split(".")[0] + ".png"
    );
    var fd = new FormData();
    // 这里的第三个参数传一个带后缀名的文件名,避免认为不是有效的图片文件
    fd.append("file",imgFile,file.name.split(".")[0] + ".png");
    $.ajax({
            type: "post",
            url: '上传路径',
            data: fd,
            contentType: false,
            processData: false  //这两个属性不能省
        })
        .then(res => {
            console.log('上传成功');
        })
  • 相关阅读:
    uva 10491 Cows and Cars
    uva 10910 Marks Distribution
    uva 11029 Leading and Trailing
    手算整数的平方根
    uva 10375 Choose and divide
    uva 10056 What is the Probability?
    uva 11027 Palindromic Permutation
    uva 10023 Square root
    Ural(Timus) 1081. Binary Lexicographic Sequence
    扩展欧几里得(求解线性方程)
  • 原文地址:https://www.cnblogs.com/223zzm/p/11782667.html
Copyright © 2011-2022 走看看