Bläddra i källkod

fix:兼容浏览下载流文件

jinx 3 år sedan
förälder
incheckning
312b39c908
1 ändrade filer med 13 tillägg och 4 borttagningar
  1. 13 4
      components/upload-titlemap/index.js

+ 13 - 4
components/upload-titlemap/index.js

@@ -79,11 +79,19 @@
             }
         },
         methods: {
+          dataURLtoBlob(dataurl) {
+                var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
+                    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
+                while (n--) {
+                    u8arr[n] = bstr.charCodeAt(n);
+                }
+                return new Blob([u8arr], { type: mime });
+            },
             downloadIamge(imgsrc, name) { //下载图片地址和图片名
                 let image = new Image();
                 // 解决跨域 Canvas 污染问题
                 image.setAttribute("crossOrigin", "anonymous");
-                image.onload = function () {
+                image.onload =  ()=> {
                     let canvas = document.createElement("canvas");
                     canvas.width = image.width;
                     canvas.height = image.height;
@@ -91,9 +99,10 @@
                     context.drawImage(image, 0, 0, image.width, image.height);
                     let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据
                     let a = document.createElement("a"); // 生成一个a元素
-                    let event = new MouseEvent("click"); // 创建一个单击事件
                     a.download = name || "photo"; // 设置图片名称
-                    a.href = url; // 将生成的URL设置为a.href属性
+                    console.log(URL.createObjectURL(this.dataURLtoBlob(url)) )
+                    a.href = URL.createObjectURL(this.dataURLtoBlob(url)) // 将生成的URL设置为a.href属性
+                    let event = new MouseEvent("click"); // 创建一个单击事件
                     a.dispatchEvent(event); // 触发a的单击事件
                 };
                 image.src = imgsrc;
@@ -105,7 +114,7 @@
 
                     if (res.data.code == 0) {
                         var name = res.data.msg.split('/')[res.data.msg.split('/').length - 1]
-                        var file = this.downloadUrl + res.data.msg
+                        var file = this.downloadUrl + res.data.msg+'?t='+new Date().getTime()
                         // console.log(name)
                         this.downloadIamge(file, name)
                         // window.location.href = this.downloadUrl + res.data.msg