Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产亚洲一区二区三区在线,日本黄大片影院一区二区,亚洲久久电影

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML5 進(jìn)階系列:文件上傳下載

          HTML5 進(jìn)階系列:文件上傳下載

          HTML5 中提供的文件API在前端中有著豐富的應(yīng)用,上傳、下載、讀取內(nèi)容等在日常的交互中很常見(jiàn)。而且在各個(gè)瀏覽器的兼容也比較好,包括移動(dòng)端,除了 IE 只支持 IE10 以上的版本。想要更好地掌握好操作文件的功能,先要熟悉每個(gè)API。

          FileList 對(duì)象和 file 對(duì)象

          HTML 中的 input[type="file"] 標(biāo)簽有個(gè) multiple 屬性,允許用戶選擇多個(gè)文件,F(xiàn)ileList對(duì)象則就是表示用戶選擇的文件列表。這個(gè)列表中的每一個(gè)文件,就是一個(gè) file 對(duì)象。

          file 對(duì)象的屬性:

          • name : 文件名,不包含路徑。
          • type : 文件類型。圖片類型的文件都會(huì)以 image/ 開頭,可以由此來(lái)限制只允許上傳圖片。
          • size : 文件大小。可以根據(jù)文件大小來(lái)進(jìn)行其他操作。
          • lastModified : 文件最后修改的時(shí)間。
          <input type="file" id="files" multiple>
          <script>
           var elem=document.getElementById('files');
           elem.onchange=function (event) {
           var files=event.target.files;
           for (var i=0; i < files.length; i++) {
           // 文件類型為 image 并且文件大小小于 200kb
           if(files[i].type.indexOf('image/') !==-1 && files[i].size < 204800){
           console.log(files[i].name);
           }
           }
           }
          </script>
          

          input 中有個(gè) accept 屬性,可以用來(lái)規(guī)定能夠通過(guò)文件上傳進(jìn)行提交的文件類型。

          accept="image/*" 可以用來(lái)限制只允許上傳圖像格式。但是在 Webkit 瀏覽器下卻出現(xiàn)了響應(yīng)滯慢的問(wèn)題,要等上好幾秒才彈出文件選擇框。

          解決方法就是將 * 通配符改為指定的 MIME 類型。

          <input type="file" accept="image/gif,image/jpeg,image/jpg,image/png">
          

          Blob 對(duì)象

          Blob 對(duì)象相當(dāng)于一個(gè)容器,可以用于存放二進(jìn)制數(shù)據(jù)。它有兩個(gè)屬性,size 屬性表示字節(jié)長(zhǎng)度,type 屬性表示 MIME 類型。

          如何創(chuàng)建

          Blob 對(duì)象可以使用 Blob() 構(gòu)造函數(shù)來(lái)創(chuàng)建。

          var blob=new Blob(['hello'], {type:"text/plain"});
          

          Blob 構(gòu)造函數(shù)中的第一個(gè)參數(shù)是一個(gè)數(shù)組,可以存放 ArrayBuffer對(duì)象、ArrayBufferView 對(duì)象、Blob對(duì)象和字符串。

          Blob 對(duì)象可以通過(guò) slice() 方法來(lái)返回一個(gè)新的 Blob 對(duì)象。

          var newblob=blob.slice(0,5, {type:"text/plain"});
          

          slice() 方法使用三個(gè)參數(shù),均為可選。第一個(gè)參數(shù)代表要從Blob對(duì)象中的二進(jìn)制數(shù)據(jù)的起始位置開始復(fù)制,第二個(gè)參數(shù)代表復(fù)制的結(jié)束位置,第三個(gè)參數(shù)為 Blob 對(duì)象的 MIME 類型。

          canvas.toBlob() 也可以創(chuàng)建 Blob 對(duì)象。toBlob() 使用三個(gè)參數(shù),第一個(gè)為回調(diào)函數(shù),第二個(gè)為圖片類型,默認(rèn)為 image/png,第三個(gè)為圖片質(zhì)量,值在0到1之間。

          var canvas=document.getElementById('canvas');
          canvas.toBlob(function(blob){ console.log(blob); }, "image/jpeg", 0.5);
          

          下載文件

          Blod 對(duì)象可以通過(guò) window.URL 對(duì)象生成一個(gè)網(wǎng)絡(luò)地址,結(jié)合 a 標(biāo)簽的 download 屬性來(lái)實(shí)現(xiàn)下載文件功能。

          比如把 canvas 下載為一個(gè)圖片文件。

          var canvas=document.getElementById('canvas');
          canvas.toBlob(function(blob){
           // 使用 createObjectURL 生成地址,格式為 blob:null/fd95b806-db11-4f98-b2ce-5eb16b38ba36
           var url=URL.createObjectURL(blob);
           var a=document.createElement('a');
           a.download='canvas';
           a.href=url;
           // 模擬a標(biāo)簽點(diǎn)擊進(jìn)行下載
           a.click();
           // 下載后告訴瀏覽器不再需要保持這個(gè)文件的引用了
           URL.revokeObjectURL(url);
          });
          

          也可以將字符串保存為一個(gè)文本文件,方法類似。

          FileReader 對(duì)象

          FileReader 對(duì)象主要用來(lái)把文件讀入內(nèi)存,并且讀取文件中的數(shù)據(jù)。通過(guò)構(gòu)造函數(shù)創(chuàng)建一個(gè) FileReader 對(duì)象

          var reader=new FileReader();
          

          該對(duì)象有以下方法:

          • abort:中斷讀取操作。
          • readAsArrayBuffer:讀取文件內(nèi)容到ArrayBuffer對(duì)象中。
          • readAsBinaryString:將文件讀取為二進(jìn)制數(shù)據(jù)。
          • readAsDataURL:將文件讀取為data: URL格式的字符串。
          • readAsText:將文件讀取為文本。

          上傳圖片預(yù)覽

          在常見(jiàn)的應(yīng)用就是在客戶端上傳圖片之后通過(guò) readAsDataURL() 來(lái)顯示圖片。

          <input type="file" id="files" accept="image/jpeg,image/jpg,image/png">
          <img src="blank.gif" id="preview">
          <script>
           var elem=document.getElementById('files'),
           img=document.getElementById('preview');
           elem.onchange=function () {
           var files=elem.files,
           reader=new FileReader();
           if(files && files[0]){
           reader.onload=function (ev) {
           img.src=ev.target.result;
           }
           reader.readAsDataURL(files[0]);
           }
           }
          </script>
          

          但是在一些手機(jī)上豎著拍照上傳照片時(shí)會(huì)有bug,會(huì)發(fā)現(xiàn)照片倒了,包括三星和iPhone。。。解決方案這里不做講解,有興趣可以查看:移動(dòng)端圖片上傳旋轉(zhuǎn)、壓縮的解決方案

          數(shù)據(jù)備份與恢復(fù)

          FileReader 對(duì)象的 readAsText() 可以讀取文件的文本,結(jié)合 Blob 對(duì)象下載文件的功能,那就可以實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)出文件備份到本地,當(dāng)數(shù)據(jù)要恢復(fù)時(shí),通過(guò) input 把備份文件上傳,使用 readAsText() 讀取文本,恢復(fù)數(shù)據(jù)。

          代碼跟上面功能類似,這里不重復(fù),具體的應(yīng)用可以參考:notepad

          Base64 編碼

          在 HTML5 中新增了 atob 和 btoa 方法來(lái)支持 Base64 編碼。它們的命名也很簡(jiǎn)單,b to a 和 a to b,即代表著編碼和解碼。

          var a="https://lin-xin.github.io";
          var b=btoa(a);
          var c=atob(b);
          console.log(a); // https://lin-xin.github.io
          console.log(b); // aHR0cHM6Ly9saW4teGluLmdpdGh1Yi5pbw==console.log(c); // https://lin-xin.github.io
          

          btoa 方法對(duì)字符串 a 進(jìn)行編碼,不會(huì)改變 a 的值,返回一個(gè)編碼后的值。atob 方法對(duì)編碼后的字符串進(jìn)行解碼。

          但是參數(shù)中帶中文,已經(jīng)超出了8位ASCII編碼的字符范圍,瀏覽器就會(huì)報(bào)錯(cuò)。所以需要先對(duì)中文進(jìn)行 encodeURIComponent 編碼處理。

          var a="哈嘍 世界";
          var b=btoa(encodeURIComponent(a));
          var c=decodeURIComponent(atob(b));
          console.log(b); // JUU1JTkzJTg4JUU1JTk2JUJEJTIwJUU0JUI4JTk2JUU3JTk1JThD
          console.log(c); // 哈嘍 世界
          

          https://zhuanlan.zhihu.com/p/27677175

          TML5 文件上傳下載的實(shí)例代碼,WEBUPLOADER之大文件分段上傳、斷點(diǎn)續(xù)傳,HTML DOM INPUT FILE 大文件上傳源代碼,B/S大附件上傳,支持?jǐn)帱c(diǎn)續(xù)傳,VUE處理文件流實(shí)現(xiàn)上傳下載,VUE 上傳大型文件插件(VUE上傳視頻插件)

          之前在網(wǎng)上也搜索過(guò)相關(guān)的資料,在論壇里面也與網(wǎng)絡(luò)交流過(guò),但是給出的方案都不太令人滿意。一方面論壇里面的網(wǎng)頁(yè)都沒(méi)有真實(shí)的項(xiàng)目經(jīng)驗(yàn)。幾乎大部分的網(wǎng)頁(yè)都是在紙上談兵,很多問(wèn)題完全是憑想象在回答。也不能夠提供真實(shí)案例,基本上都沒(méi)有項(xiàng)目的實(shí)戰(zhàn)經(jīng)驗(yàn)。

          甚至有些學(xué)生也在里面不知道從哪里復(fù)制的一些代碼然后粘貼在上面。

          后端PHP5,PHP6,PHP7,PHP8,ThinkPHP,

          服務(wù)器支持Linux,Windows,macOS,CentOS,中標(biāo)麒麟,銀河麒麟,統(tǒng)信,龍芯,華為鯤鵬,

          數(shù)據(jù)庫(kù)支持MySQL,達(dá)夢(mèng)數(shù)據(jù)庫(kù),人大金倉(cāng)

          需要提供前端源碼,后端源碼,控件源碼

          需要提供7*24小時(shí)技術(shù)支持,長(zhǎng)期技術(shù)支持,長(zhǎng)期維護(hù)服務(wù)

          需要提供手機(jī),QQ,微信,企業(yè)微信,電子郵箱等聯(lián)系方式

          需要支持包含IE在內(nèi)的全部瀏覽器

          終端需要支持Windows,macOS,Linux,信創(chuàng)國(guó)產(chǎn)化環(huán)境,中標(biāo)麒麟,銀河麒麟,統(tǒng)信UOS,龍芯,華為

          功能需要支持10G,50G,100G大文件上傳和斷點(diǎn)續(xù)傳,刷新續(xù)傳,重啟續(xù)傳

          文件夾包含1W,10W,100W個(gè)文件和層級(jí)結(jié)構(gòu)

          支持超大文件分片,分段,分塊,分割上傳下載,斷點(diǎn)續(xù)傳

          支持文件夾上傳,下載斷點(diǎn)續(xù)傳,支持文件夾層級(jí)結(jié)構(gòu),層級(jí)結(jié)構(gòu)信息保存到數(shù)據(jù)庫(kù),下載的時(shí)候同樣保留層級(jí)結(jié)構(gòu)

          支持加密上傳,下載加密,端到端加密,國(guó)密SM4加密算法,數(shù)據(jù)加密傳輸,傳輸過(guò)程中要保證數(shù)據(jù)是加密的。1.下載示例

          https://gitee.com/xproer/up6-vue-cli



          將up6組件復(fù)制到項(xiàng)目中

          示例中已經(jīng)包含此目錄



          1.引入up6組件



          2.配置接口地址

          接口地址分別對(duì)應(yīng):文件初始化,文件數(shù)據(jù)上傳,文件進(jìn)度,文件上傳完畢,文件刪除,文件夾初始化,文件夾刪除,文件列表

          參考:http://www.ncmem.com/doc/view.aspx?id=e1f49f3e1d4742e19135e00bd41fa3de



          3.處理事件



          啟動(dòng)測(cè)試



          啟動(dòng)成功



          效果



          數(shù)據(jù)庫(kù)



          源碼工程文檔:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

          源碼報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

          OEM版報(bào)價(jià)單:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

          控件源碼下載:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc

          older Responsive Html5 Theme

          zCumbeton – Free Responsive Html5 Theme

          Kataklimt Responsive Html5 Theme

          Zparalexy Responsive Html5 Theme

          zBoomMusic – Free Responsive Html5 Theme

          Response Responsive Html5 Theme

          VividPhoto Responsive HTML5 and CSS3 Template

          Respond Responsive Html5 Theme

          Brownie Responsive Html5 Theme

          Triangle Responsive Html5 Theme

          LiquidGem Responsive Html5 Theme

          Hosting Website – Free Html5 Responsive Template

          Flexapp Responsive Html5 Theme

          Designa Responsive Html5 Theme

          Accentbox Responsive Html5 Theme

          OnePager Responsive Html5 Theme

          Simpler Responsive Html5 Theme

          Free ABC Responsive Templates

          Free Modu Responsive HTML 5 Template

          Sunrise – A free responsive HTML5 theme

          Resond Free responsive HTML5 template


          主站蜘蛛池模板: 亚洲综合国产一区二区三区| 久久精品一区二区东京热| 国产拳头交一区二区| 无码国产精品一区二区高潮| 国产一区二区三区在线免费观看| 国产激情一区二区三区四区 | 国产亚洲一区二区三区在线| 国产亚洲一区二区三区在线观看| 久久伊人精品一区二区三区| 精品国产免费一区二区| 一区二区三区在线看| 一区二区三区视频在线观看| 亚洲熟女综合一区二区三区| 天天看高清无码一区二区三区 | 国产精品美女一区二区视频| 亚洲视频一区在线播放| 日韩aⅴ人妻无码一区二区| 99国产精品一区二区| 国产精品香蕉在线一区| jazzjazz国产精品一区二区| 人妻少妇精品视频一区二区三区 | 国产一区二区不卡在线播放| 久久久老熟女一区二区三区| 日本在线电影一区二区三区| 国产成人精品无码一区二区| 国产精品无码一区二区在线观| 国产精品男男视频一区二区三区| 毛片一区二区三区| 99久久精品国产免看国产一区| 亚洲欧美成人一区二区三区| 精品一区二区三区四区在线| 国产精品合集一区二区三区| asmr国产一区在线| 韩国精品一区视频在线播放| 久久se精品动漫一区二区三区| 亚洲av午夜福利精品一区| 无码人妻精品一区二 | 在线欧美精品一区二区三区| 国产精品毛片a∨一区二区三区| 亚洲AV一区二区三区四区| 国产婷婷色一区二区三区|