{"id":94,"date":"2019-05-07T11:09:57","date_gmt":"2019-05-07T03:09:57","guid":{"rendered":"http:\/\/www.hufe.org.cn\/?p=94"},"modified":"2019-11-25T12:18:04","modified_gmt":"2019-11-25T04:18:04","slug":"%e5%89%8d%e7%ab%af%e5%9b%be%e7%89%87%e5%8e%8b%e7%bc%a9%e4%b8%8a%e4%bc%a0%e7%ba%afjs%e7%9a%84%e8%b4%a8%e9%87%8f%e5%8e%8b%e7%bc%a9%ef%bc%8c%e9%9d%9e%e9%95%bf%e5%ae%bd%e5%8e%8b%e7%bc%a9","status":"publish","type":"post","link":"https:\/\/www.hufe.org.cn\/?p=94","title":{"rendered":"\u524d\u7aef\u56fe\u7247\u538b\u7f29\u4e0a\u4f20(\u7eafjs\u7684\u8d28\u91cf\u538b\u7f29\uff0c\u975e\u957f\u5bbd\u538b\u7f29)"},"content":{"rendered":"\n<p> \u4eb2\u6d4b\u53ef\u7528\uff0c\u5df2\u7ecf\u4f7f\u7528\uff0c\u624b\u673a\u548c\u7535\u8111\u90fd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u4f20\uff0c\u62cd\u7167\u4e5f\u53ef\u4ee5\u3002\u6b64demo\u4e3a\u5927\u4e8e1M\u5bf9\u56fe\u7247\u8fdb\u884c\u538b\u7f29\u4e0a\u4f20\u82e5\u5c0f\u4e8e1M\u5219\u539f\u56fe\u4e0a\u4f20\uff0c\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u9700\u6c42\u66f4\u6539\u3002demo\u6e90\u7801\u5982\u4e0b:<br> <\/p>\n\n\n\n<p><br> <\/p>\n\n\n\n<!DOCTYPE html>\n<html>\n<head>\n    <meta charset=\"UTF-8\">\n    <title>XMLHttpRequest\u4e0a\u4f20\u6587\u4ef6<\/title>\n    <script type=\"text\/javascript\">\n        \/*\n        \u4e09\u4e2a\u53c2\u6570\n        file\uff1a\u4e00\u4e2a\u662f\u6587\u4ef6(\u7c7b\u578b\u662f\u56fe\u7247\u683c\u5f0f)\uff0c\n        w\uff1a\u4e00\u4e2a\u662f\u6587\u4ef6\u538b\u7f29\u7684\u540e\u5bbd\u5ea6\uff0c\u5bbd\u5ea6\u8d8a\u5c0f\uff0c\u5b57\u8282\u8d8a\u5c0f\n        objDiv\uff1a\u4e00\u4e2a\u662f\u5bb9\u5668\u6216\u8005\u56de\u8c03\u51fd\u6570\n        photoCompress()\n         *\/\n        function photoCompress(file,w,objDiv){\n            var ready=new FileReader();\n            \/*\u5f00\u59cb\u8bfb\u53d6\u6307\u5b9a\u7684Blob\u5bf9\u8c61\u6216File\u5bf9\u8c61\u4e2d\u7684\u5185\u5bb9. \u5f53\u8bfb\u53d6\u64cd\u4f5c\u5b8c\u6210\u65f6,readyState\u5c5e\u6027\u7684\u503c\u4f1a\u6210\u4e3aDONE,\u5982\u679c\u8bbe\u7f6e\u4e86onloadend\u4e8b\u4ef6\u5904\u7406\u7a0b\u5e8f,\u5219\u8c03\u7528\u4e4b.\u540c\u65f6,result\u5c5e\u6027\u4e2d\u5c06\u5305\u542b\u4e00\u4e2adata: URL\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u4ee5\u8868\u793a\u6240\u8bfb\u53d6\u6587\u4ef6\u7684\u5185\u5bb9.*\/\n            ready.readAsDataURL(file);\n            ready.onload=function(){\n                var re=this.result;\n                canvasDataURL(re,w,objDiv)\n            }\n        }\n        function canvasDataURL(path, obj, callback){\n            var img = new Image();\n            img.src = path;\n            img.onload = function(){\n                var that = this;\n                \/\/ \u9ed8\u8ba4\u6309\u6bd4\u4f8b\u538b\u7f29\n                var w = that.width,\n                    h = that.height,\n                    scale = w \/ h;\n                w = obj.width || w;\n                h = obj.height || (w \/ scale);\n                var quality = 0.7;  \/\/ \u9ed8\u8ba4\u56fe\u7247\u8d28\u91cf\u4e3a0.7\n                \/\/\u751f\u6210canvas\n                var canvas = document.createElement('canvas');\n                var ctx = canvas.getContext('2d');\n                \/\/ \u521b\u5efa\u5c5e\u6027\u8282\u70b9\n                var anw = document.createAttribute(\"width\");\n                anw.nodeValue = w;\n                var anh = document.createAttribute(\"height\");\n                anh.nodeValue = h;\n                canvas.setAttributeNode(anw);\n                canvas.setAttributeNode(anh);\n                ctx.drawImage(that, 0, 0, w, h);\n                \/\/ \u56fe\u50cf\u8d28\u91cf\n                if(obj.quality && obj.quality <= 1 &#038;&#038; obj.quality > 0){\n                    quality = obj.quality;\n                }\n                \/\/ quality\u503c\u8d8a\u5c0f\uff0c\u6240\u7ed8\u5236\u51fa\u7684\u56fe\u50cf\u8d8a\u6a21\u7cca\n                var base64 = canvas.toDataURL('image\/jpeg', quality);\n                \/\/ \u56de\u8c03\u51fd\u6570\u8fd4\u56debase64\u7684\u503c\n                callback(base64);\n            }\n        }\n        \/**\n         * \u5c06\u4ee5base64\u7684\u56fe\u7247url\u6570\u636e\u8f6c\u6362\u4e3aBlob\n         * @param urlData\n         *            \u7528url\u65b9\u5f0f\u8868\u793a\u7684base64\u56fe\u7247\u6570\u636e\n         *\/\n        function convertBase64UrlToBlob(urlData){\n            var arr = urlData.split(','), mime = arr[0].match(\/:(.*?);\/)[1],\n                bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\n            while(n--){\n                u8arr[n] = bstr.charCodeAt(n);\n            }\n            return new Blob([u8arr], {type:mime});\n        }\n\n\n        var xhr;\n        \/\/\u4e0a\u4f20\u6587\u4ef6\u65b9\u6cd5\n        function UpladFile() {\n            var fileObj = document.getElementById(\"file\").files[0]; \/\/ js \u83b7\u53d6\u6587\u4ef6\u5bf9\u8c61\n            var url = \"\u540e\u53f0\u56fe\u7247\u4e0a\u4f20\u63a5\u53e3\"; \/\/ \u63a5\u6536\u4e0a\u4f20\u6587\u4ef6\u7684\u540e\u53f0\u5730\u5740 \n\n            var form = new FormData(); \/\/ FormData \u5bf9\u8c61\n\n            if(fileObj.size\/1024 > 1025) { \/\/\u5927\u4e8e1M\uff0c\u8fdb\u884c\u538b\u7f29\u4e0a\u4f20\n                photoCompress(fileObj, {\n                    quality: 0.2\n                }, function(base64Codes){\n                    \/\/console.log(\"\u538b\u7f29\u540e\uff1a\" + base.length \/ 1024 + \" \" + base);\n                    var bl = convertBase64UrlToBlob(base64Codes);\n                    form.append(\"file\", bl, \"file_\"+Date.parse(new Date())+\".jpg\"); \/\/ \u6587\u4ef6\u5bf9\u8c61\n                    xhr = new XMLHttpRequest();  \/\/ XMLHttpRequest \u5bf9\u8c61\n                    xhr.open(\"post\", url, true); \/\/post\u65b9\u5f0f\uff0curl\u4e3a\u670d\u52a1\u5668\u8bf7\u6c42\u5730\u5740\uff0ctrue \u8be5\u53c2\u6570\u89c4\u5b9a\u8bf7\u6c42\u662f\u5426\u5f02\u6b65\u5904\u7406\u3002\n                    xhr.onload = uploadComplete; \/\/\u8bf7\u6c42\u5b8c\u6210\n                    xhr.onerror =  uploadFailed; \/\/\u8bf7\u6c42\u5931\u8d25\n\n                    xhr.upload.onprogress = progressFunction;\/\/\u3010\u4e0a\u4f20\u8fdb\u5ea6\u8c03\u7528\u65b9\u6cd5\u5b9e\u73b0\u3011\n                    xhr.upload.onloadstart = function(){\/\/\u4e0a\u4f20\u5f00\u59cb\u6267\u884c\u65b9\u6cd5\n                        ot = new Date().getTime();   \/\/\u8bbe\u7f6e\u4e0a\u4f20\u5f00\u59cb\u65f6\u95f4\n                        oloaded = 0;\/\/\u8bbe\u7f6e\u4e0a\u4f20\u5f00\u59cb\u65f6\uff0c\u4ee5\u4e0a\u4f20\u7684\u6587\u4ef6\u5927\u5c0f\u4e3a0\n                    };\n\n                    xhr.send(form); \/\/\u5f00\u59cb\u4e0a\u4f20\uff0c\u53d1\u9001form\u6570\u636e\n                });\n            }else{ \/\/\u5c0f\u4e8e\u7b49\u4e8e1M \u539f\u56fe\u4e0a\u4f20\n                form.append(\"file\", fileObj); \/\/ \u6587\u4ef6\u5bf9\u8c61\n                xhr = new XMLHttpRequest();  \/\/ XMLHttpRequest \u5bf9\u8c61\n                xhr.open(\"post\", url, true); \/\/post\u65b9\u5f0f\uff0curl\u4e3a\u670d\u52a1\u5668\u8bf7\u6c42\u5730\u5740\uff0ctrue \u8be5\u53c2\u6570\u89c4\u5b9a\u8bf7\u6c42\u662f\u5426\u5f02\u6b65\u5904\u7406\u3002\n                xhr.onload = uploadComplete; \/\/\u8bf7\u6c42\u5b8c\u6210\n                xhr.onerror =  uploadFailed; \/\/\u8bf7\u6c42\u5931\u8d25\n\n                xhr.upload.onprogress = progressFunction;\/\/\u3010\u4e0a\u4f20\u8fdb\u5ea6\u8c03\u7528\u65b9\u6cd5\u5b9e\u73b0\u3011\n                xhr.upload.onloadstart = function(){\/\/\u4e0a\u4f20\u5f00\u59cb\u6267\u884c\u65b9\u6cd5\n                    ot = new Date().getTime();   \/\/\u8bbe\u7f6e\u4e0a\u4f20\u5f00\u59cb\u65f6\u95f4\n                    oloaded = 0;\/\/\u8bbe\u7f6e\u4e0a\u4f20\u5f00\u59cb\u65f6\uff0c\u4ee5\u4e0a\u4f20\u7684\u6587\u4ef6\u5927\u5c0f\u4e3a0\n                };\n\n                xhr.send(form); \/\/\u5f00\u59cb\u4e0a\u4f20\uff0c\u53d1\u9001form\u6570\u636e\n            }\n        }\n\n        \/\/\u4e0a\u4f20\u6210\u529f\u54cd\u5e94\n        function uploadComplete(evt) {\n            \/\/\u670d\u52a1\u65ad\u63a5\u6536\u5b8c\u6587\u4ef6\u8fd4\u56de\u7684\u7ed3\u679c\n\n            var data = JSON.parse(evt.target.responseText);\n            if(data.success) {\n                alert(\"\u4e0a\u4f20\u6210\u529f\uff01\");\n            }else{\n                alert(\"\u4e0a\u4f20\u5931\u8d25\uff01\");\n            }\n\n        }\n        \/\/\u4e0a\u4f20\u5931\u8d25\n        function uploadFailed(evt) {\n            alert(\"\u4e0a\u4f20\u5931\u8d25\uff01\");\n        }\n        \/\/\u53d6\u6d88\u4e0a\u4f20\n        function cancleUploadFile(){\n            xhr.abort();\n        }\n\n        \/\/\u4e0a\u4f20\u8fdb\u5ea6\u5b9e\u73b0\u65b9\u6cd5\uff0c\u4e0a\u4f20\u8fc7\u7a0b\u4e2d\u4f1a\u9891\u7e41\u8c03\u7528\u8be5\u65b9\u6cd5\n        function progressFunction(evt) {\n            var progressBar = document.getElementById(\"progressBar\");\n            var percentageDiv = document.getElementById(\"percentage\");\n            \/\/ event.total\u662f\u9700\u8981\u4f20\u8f93\u7684\u603b\u5b57\u8282\uff0cevent.loaded\u662f\u5df2\u7ecf\u4f20\u8f93\u7684\u5b57\u8282\u3002\u5982\u679cevent.lengthComputable\u4e0d\u4e3a\u771f\uff0c\u5219event.total\u7b49\u4e8e0\n            if (evt.lengthComputable) {\/\/\n                progressBar.max = evt.total;\n                progressBar.value = evt.loaded;\n                percentageDiv.innerHTML = Math.round(evt.loaded \/ evt.total * 100) + \"%\";\n            }\n            var time = document.getElementById(\"time\");\n            var nt = new Date().getTime();\/\/\u83b7\u53d6\u5f53\u524d\u65f6\u95f4\n            var pertime = (nt-ot)\/1000; \/\/\u8ba1\u7b97\u51fa\u4e0a\u6b21\u8c03\u7528\u8be5\u65b9\u6cd5\u65f6\u5230\u73b0\u5728\u7684\u65f6\u95f4\u5dee\uff0c\u5355\u4f4d\u4e3as\n            ot = new Date().getTime(); \/\/\u91cd\u65b0\u8d4b\u503c\u65f6\u95f4\uff0c\u7528\u4e8e\u4e0b\u6b21\u8ba1\u7b97\n            var perload = evt.loaded - oloaded; \/\/\u8ba1\u7b97\u8be5\u5206\u6bb5\u4e0a\u4f20\u7684\u6587\u4ef6\u5927\u5c0f\uff0c\u5355\u4f4db\n            oloaded = evt.loaded;\/\/\u91cd\u65b0\u8d4b\u503c\u5df2\u4e0a\u4f20\u6587\u4ef6\u5927\u5c0f\uff0c\u7528\u4ee5\u4e0b\u6b21\u8ba1\u7b97\n            \/\/\u4e0a\u4f20\u901f\u5ea6\u8ba1\u7b97\n            var speed = perload\/pertime;\/\/\u5355\u4f4db\/s\n            var bspeed = speed;\n            var units = 'b\/s';\/\/\u5355\u4f4d\u540d\u79f0\n            if(speed\/1024>1){\n                speed = speed\/1024;\n                units = 'k\/s';\n            }\n            if(speed\/1024>1){\n                speed = speed\/1024;\n                units = 'M\/s';\n            }\n            speed = speed.toFixed(1);\n            \/\/\u5269\u4f59\u65f6\u95f4\n            var resttime = ((evt.total-evt.loaded)\/bspeed).toFixed(1);\n            time.innerHTML = '\uff0c\u901f\u5ea6\uff1a'+speed+units+'\uff0c\u5269\u4f59\u65f6\u95f4\uff1a'+resttime+'s';\n            if(bspeed==0) time.innerHTML = '\u4e0a\u4f20\u5df2\u53d6\u6d88';\n        }\n    <\/script>\n<\/head>\n<body>\n<progress id=\"progressBar\" value=\"0\" max=\"100\" style=\"width: 300px;\"><\/progress>\n<span id=\"percentage\"><\/span><span id=\"time\"><\/span>\n<br \/><br \/>\n<input type=\"file\" id=\"file\" name=\"myfile\" accept=\"image\/x-png, image\/jpg, image\/jpeg, image\/gif\"\/>\n<input type=\"button\" onclick=\"UpladFile()\" value=\"\u4e0a\u4f20\" \/>\n<input type=\"button\" onclick=\"cancleUploadFile()\" value=\"\u53d6\u6d88\" \/>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u4eb2\u6d4b\u53ef\u7528\uff0c\u5df2\u7ecf\u4f7f\u7528\uff0c\u624b\u673a\u548c\u7535\u8111\u90fd\u53ef\u4ee5\u76f4\u63a5\u4e0a\u4f20\uff0c\u62cd\u7167\u4e5f\u53ef\u4ee5\u3002\u6b64demo\u4e3a\u5927\u4e8e1M\u5bf9\u56fe\u7247\u8fdb\u884c\u538b\u7f29\u4e0a\u4f20\u82e5\u5c0f\u4e8e1M\u5219\u539f&hellip;&nbsp;<a href=\"https:\/\/www.hufe.org.cn\/?p=94\" class=\"\" rel=\"bookmark\">\u9605\u8bfb\u66f4\u591a &raquo;<span class=\"screen-reader-text\">\u524d\u7aef\u56fe\u7247\u538b\u7f29\u4e0a\u4f20(\u7eafjs\u7684\u8d28\u91cf\u538b\u7f29\uff0c\u975e\u957f\u5bbd\u538b\u7f29)<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/94"}],"collection":[{"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=94"}],"version-history":[{"count":2,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/94\/revisions"}],"predecessor-version":[{"id":99,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/94\/revisions\/99"}],"wp:attachment":[{"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=94"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=94"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hufe.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=94"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}