Browse Source

change toast

StephenArk30 6 năm trước cách đây
mục cha
commit
90febed5ab

+ 85 - 2
sourcecode/h5app/vue/src/views/PresentRegister.vue

@@ -120,7 +120,7 @@
                 Toast.loading({
                     mask: true,
                     message: '图片上传较慢,请耐心等待...',
-                    duration: 1000
+                    duration: 3000
                 });
                 this.loading = true;
                 // 检验输入
@@ -201,7 +201,25 @@
                 }
                 else {
                     let formData = new FormData();
-                    formData.append('file', this.photo);
+                    // formData.append('file', this.photo);
+                    let fileObj = this.photo;
+
+                    if (fileObj.size / 1024 > 1025) { //大于1M,进行压缩上传
+                        photoCompress(fileObj, {
+                            quality: 0.2
+                        }, function (base64Codes) {
+                            //console.log("压缩后:" + base.length / 1024 + " " + base);
+                            var bl = convertBase64UrlToBlob(base64Codes);
+                            // formData.append('file', fileObj);
+                            console.log(fileObj);
+                            formData.append("file", bl); // 文件对象
+                            console.log(bl);
+                            console.log("file_" + Date.parse(new Date()) + ".jpg");
+                        });
+                    } else { //小于等于1M 原图上传
+                        formData.append('file', this.photo);
+                    }
+
                     // 先上传图片
                     BasicFunction.get_data("fileserver/upload?sign=abcdefg", function (res) {
                         // console.log('----- upload photo result -----');
@@ -359,6 +377,71 @@
             }
         }
     }
+
+    /*
+        三个参数
+        file:一个是文件(类型是图片格式),
+        w:一个是文件压缩的后宽度,宽度越小,字节越小
+        objDiv:一个是容器或者回调函数
+        photoCompress()
+         */
+    function photoCompress(file, w, objDiv) {
+        var ready = new FileReader();
+        /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/
+        ready.readAsDataURL(file);
+        ready.onload = function () {
+            var re = this.result;
+            canvasDataURL(re, w, objDiv)
+        }
+    }
+
+    function canvasDataURL(path, obj, callback) {
+        var img = new Image();
+        img.src = path;
+        img.onload = function () {
+            var that = this;
+            // 默认按比例压缩
+            var w = that.width,
+                h = that.height,
+                scale = w / h;
+            w = obj.width || w;
+            h = obj.height || (w / scale);
+            var quality = 0.7;  // 默认图片质量为0.7
+            //生成canvas
+            var canvas = document.createElement('canvas');
+            var ctx = canvas.getContext('2d');
+            // 创建属性节点
+            var anw = document.createAttribute("width");
+            anw.nodeValue = w;
+            var anh = document.createAttribute("height");
+            anh.nodeValue = h;
+            canvas.setAttributeNode(anw);
+            canvas.setAttributeNode(anh);
+            ctx.drawImage(that, 0, 0, w, h);
+            // 图像质量
+            if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
+                quality = obj.quality;
+            }
+            // quality值越小,所绘制出的图像越模糊
+            var base64 = canvas.toDataURL('image/jpeg', quality);
+            // 回调函数返回base64的值
+            callback(base64);
+        }
+    }
+
+    /**
+     * 将以base64的图片url数据转换为Blob
+     * @param urlData
+     *            用url方式表示的base64图片数据
+     */
+    function convertBase64UrlToBlob(urlData) {
+        var arr = urlData.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});
+    }
 </script>
 
 <style scoped>

+ 128 - 1
sourcecode/h5app/vue/src/views/SecurityVerify.vue

@@ -182,8 +182,25 @@
                 // console.log('------- photo -------');
                 // console.log(this.photo);
                 this.updateInfo(null);
+                // let fileObj = this.photo;
                 let formData = new FormData();
-                formData.append('file', this.photo);
+
+
+                // if(fileObj.size/1024 > 1025) { //大于1M,进行压缩上传
+                //     photoCompress(fileObj, {
+                //         quality: 0.2
+                //     }, function(base64Codes){
+                //         //console.log("压缩后:" + base.length / 1024 + " " + base);
+                //         var bl = convertBase64UrlToBlob(base64Codes);
+                //         formData.append('file', fileObj);
+                //         console.log(formData);
+                //         formData.append("file", bl, "file_"+Date.parse(new Date())+".jpg"); // 文件对象
+                //         console.log(formData);
+                //     });
+                // }else { //小于等于1M 原图上传
+                //     formData.append('file', this.photo);
+                // }
+
                 BasicFunction.get_data("fileserver/upload?sign=abcdefg", function (res) {
                     try {
                         let imgURL = res.model;
@@ -347,6 +364,116 @@
         }
         return true;
     }
+
+    /*
+        三个参数
+        file:一个是文件(类型是图片格式),
+        w:一个是文件压缩的后宽度,宽度越小,字节越小
+        objDiv:一个是容器或者回调函数
+        photoCompress()
+         */
+    function photoCompress(file, w, objDiv) {
+        var ready = new FileReader();
+        /*开始读取指定的Blob对象或File对象中的内容. 当读取操作完成时,readyState属性的值会成为DONE,如果设置了onloadend事件处理程序,则调用之.同时,result属性中将包含一个data: URL格式的字符串以表示所读取文件的内容.*/
+        ready.readAsDataURL(file);
+        ready.onload = function () {
+            var re = this.result;
+            canvasDataURL(re, w, objDiv)
+        }
+    }
+
+    function canvasDataURL(path, obj, callback) {
+        var img = new Image();
+        img.src = path;
+        img.onload = function () {
+            var that = this;
+            // 默认按比例压缩
+            var w = that.width,
+                h = that.height,
+                scale = w / h;
+            w = obj.width || w;
+            h = obj.height || (w / scale);
+            var quality = 0.7;  // 默认图片质量为0.7
+            //生成canvas
+            var canvas = document.createElement('canvas');
+            var ctx = canvas.getContext('2d');
+            // 创建属性节点
+            var anw = document.createAttribute("width");
+            anw.nodeValue = w;
+            var anh = document.createAttribute("height");
+            anh.nodeValue = h;
+            canvas.setAttributeNode(anw);
+            canvas.setAttributeNode(anh);
+            ctx.drawImage(that, 0, 0, w, h);
+            // 图像质量
+            if (obj.quality && obj.quality <= 1 && obj.quality > 0) {
+                quality = obj.quality;
+            }
+            // quality值越小,所绘制出的图像越模糊
+            var base64 = canvas.toDataURL('image/jpeg', quality);
+            // 回调函数返回base64的值
+            callback(base64);
+        }
+    }
+
+    /**
+     * 将以base64的图片url数据转换为Blob
+     * @param urlData
+     *            用url方式表示的base64图片数据
+     */
+    function convertBase64UrlToBlob(urlData) {
+        var arr = urlData.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});
+    }
+
+
+    //上传文件方法
+    function UpladFile() {
+        var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
+        var url = "后台图片上传接口"; // 接收上传文件的后台地址
+
+        var form = new FormData(); // FormData 对象
+
+        if (fileObj.size / 1024 > 1025) { //大于1M,进行压缩上传
+            photoCompress(fileObj, {
+                quality: 0.2
+            }, function (base64Codes) {
+                //console.log("压缩后:" + base.length / 1024 + " " + base);
+                var bl = convertBase64UrlToBlob(base64Codes);
+                form.append("file", bl, "file_" + Date.parse(new Date()) + ".jpg"); // 文件对象
+                xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
+                xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
+                xhr.onload = uploadComplete; //请求完成
+                xhr.onerror = uploadFailed; //请求失败
+
+                xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
+                xhr.upload.onloadstart = function () {//上传开始执行方法
+                    ot = new Date().getTime();   //设置上传开始时间
+                    oloaded = 0;//设置上传开始时,以上传的文件大小为0
+                };
+
+                xhr.send(form); //开始上传,发送form数据
+            });
+        } else { //小于等于1M 原图上传
+            form.append("file", fileObj); // 文件对象
+            xhr = new XMLHttpRequest();  // XMLHttpRequest 对象
+            xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
+            xhr.onload = uploadComplete; //请求完成
+            xhr.onerror = uploadFailed; //请求失败
+
+            xhr.upload.onprogress = progressFunction;//【上传进度调用方法实现】
+            xhr.upload.onloadstart = function () {//上传开始执行方法
+                ot = new Date().getTime();   //设置上传开始时间
+                oloaded = 0;//设置上传开始时,以上传的文件大小为0
+            };
+
+            xhr.send(form); //开始上传,发送form数据
+        }
+    }
 </script>
 
 <style scoped>