亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Vue項目中使用WebUploader實現文件上傳的方法

2019-11-19 11:09:35
字體:
來源:轉載
供稿:網友

簡介:

WebUploader是由 Baidu WebFE(FEX) 團隊開發的一個簡單的以 HTML5為主 , FLASH為輔 的現代 文件上傳組件 。在現代的瀏覽器里面能充分發揮HTML5的優勢,同時又 不摒棄主流IE瀏覽器 ,沿用原來的FLASH運行時, 兼容IE6+,iOS 6+, android 4+ 。兩套運行時,同樣的調用方式,可供用戶任意選用。采用 大文件分片并發上傳 ,極大的提高了文件上傳效率。

分片、并發

分片 與 并發 結合,將一個大文件分割成多塊, 并發上傳 ,極大地提高大文件的上傳速度。

當 網絡問題 導致傳輸錯誤時,只需要 重傳出錯分片 ,而不是整個文件。另外分片傳輸能夠更加實時的跟蹤上傳進度。

預覽、壓縮

支持常用圖片格式jpg,jpeg,gif,bmp,png 預覽與壓縮 ,節省網絡數據傳輸。

解析 jpeg中的meta信息,對于各種 orientation 做了正確的處理,同時壓縮后上傳保留圖片的所有 原始meta數據 。

多途徑添加文件

支持 文件多選 , 類型過濾 , 拖拽 (文件&文件夾),圖片 粘貼功能 。

粘貼功能主要體現在當有圖片數據在剪切板中時(截屏工具如QQ(Ctrl + ALT + A), 網頁中右擊圖片點擊復制), Ctrl + V 便可添加此圖片文件。

HTML5 & FLASH

兼容主流瀏覽器 ,接口一致,實現了兩套運行時支持,用戶無需關心內部用了什么內核。

同時Flash部分沒有做任何UI相關的工作,方便不關心flash的用戶擴展和自定義業務需求

MD5秒傳

當文件體積大、量比較多時,支持上傳前做文件 md5值驗證 ,一致則可直接跳過。

如果服務端與前端統一修改算法, 取段md5 ,可大大 提升驗證性能 ,耗時在20ms左右

 

下載webuploader

下載并解壓后,文件目錄結構如下

Uploader.swf 

//樣式文件     webuploader.css//定制版    webuploader.custom.js   webuploader.custom.min.jswebuploader.fis.js//只有Flash實現的版本webuploader.flashonly.jswebuploader.flashonly.min.js//只有HTML5實現的版本webuploader.html5only.js   webuploader.html5only.min.js  //完整版webuploader.js     webuploader.min.js //沒有圖像處理的版本。    webuploader.noimage.jswebuploader.noimage.min.js//不帶文件日志功能的版本(默認完整版帶日志功能)webuploader.nolog.jswebuploader.nolog.min.js//去除圖片處理的版本,包括HTML5和FLASH.webuploader.withoutimage.jswebuploader.withoutimage.min.js

注意:這里的 css 文件很少,只是那個上傳文件按鈕的樣式,其他的樣式需要自己書寫,也可以直接追加在當前 vue 組件的樣式里面

引入webuploader

使用Web Uploader文件上傳需要引入三種資源:JS, CSS, SWF。

方法1:直接引入文件

這里我們使用完全壓縮版的 webuploader.min.js ,同時還要引入 Uploader.swf 、 webuploader.css ,所以可以刪除其他版本的文件,只留這三個文件,將解壓的 webuploader 文件夾直接放在 static 文件夾下.

在 index.html 中引入 webuploader.min.js

<script src="./static/webuploader-0.1.5/webuploader.min.js"></script>

 

重啟項目后報錯了,說缺少依賴 jquery ,打開源碼 webuploader.js 看一下

 

原來 webuploader 是依賴于 juqery 或者 Zepto 的,那我們引入 jquery ,我們去 jquery 官網下載 jquery ,并在 index.html 中引入,注意,一定要在 webuploader.min.js 之前引入,在這里我下載的是 1.12.4 版本

<script src="./static/webuploader-0.1.5/jQuery1.12.4.js"></script>

寫一個Demo

HTML部分

App.vue

<template> <div id="app">  <div id="uploader" class="wu-example">  <!--用來存放文件信息-->  <div id="fileLilst" class="uploader-list"></div>   <div class="btns">   <!-- 選擇文件的按鈕 -->    <div id="picker">選擇文件</div>   <!-- 開始上傳按鈕 -->    <button id="uploadBtn" class="btn btn-default">開始上傳</button>   </div>  </div> </div></template>

JS部分,初始化 webuploader

在 Vue 的 mounted 周期內實例化 webuploader 并進行配置

App.vue

mounted:function(){  var uploader = WebUploader.create({  // swf文件路徑  swf:'../static/webuploader-0.1.5/Uploader.swf',  // 文件接收服務端。  server: 'http://webuploader.duapp.com/server/fileupload.php',  // 選擇文件的按鈕。可選。  // 內部根據當前運行是創建,可能是input元素,也可能是flash.  pick: '#picker',  // 不壓縮image, 默認如果是jpeg,文件上傳前會壓縮一把再上傳!  resize: false }); }

文件加入隊列前

可以在該事件回調函數中對文件類型進行篩選,或者根據文件大小決定是否開啟分片上傳

 

uploader.on( 'beforeFileQueued', function( file) { console.log('文件加入隊前',file)});

文件加入隊列后

// 當有文件被添加進隊列的時候  uploader.on( 'fileQueued', function( file ) {  console.log('文件加入隊列后')   var $list = $('#fileList')   $list.append( '<div id="' + file.id + '" class="item">' +    '<h4 class="info">' + file.name + '</h4>' +    '<p class="state">等待上傳...</p>' +   '</div>' );  });

 

點擊 選擇文件 按鈕后,選擇一個文件,就會如上圖所示,出現文件列表,從代碼可以看出,他是在選擇文件之后,動態添加的的 dom ,顯示文件名稱以及狀態,關于文件的詳細信息,則可以從 fileQueued 事件的回調函數的參數 file 獲取,我們打印一下 file

 

ext------------------------------文件后綴
id-------------------------------文件ID
lastModifiedDate-----------------文件最后修改時間
name-----------------------------文件名稱
size-----------------------------文件大?。ㄟ@里是以字節為單位,1字節=1KB,1M=1024KB,1m=1024*1024字節)
source---------------------------包含一些文件信息和方法,例如唯一標識的`ruid`、`uid`、`_hash`

文件上傳中

主要利用了 webuploader 的 uploadProgress 事件,該事件會在文件上傳過程中觸發,可以利用該事件創建進度條

// 文件上傳過程中創建進度條實時顯示。  uploader.on( 'uploadProgress', function( file, percentage ) {  console.log('文件上傳中',file,percentage)   var $li = $( '#'+file.id ),    $percent = $li.find('.progress .progress-bar');   // 避免重復創建   if ( !$percent.length ) {    $percent = $('<div class="progress progress-striped active">' +    '<div class="progress-bar" role="progressbar" style="width: 0%">' +    '</div>' +    '</div>').appendTo( $li ).find('.progress-bar');   }   $li.find('p.state').text('上傳中');   $percent.css( 'width', percentage * 100 + '%' ); //根據上傳進度改變進度條寬度  });

 

uploadProgress 事件的回調函數的參數 file 是文件的一些信息, percentage 則是文件上傳進度,1為上傳完畢,從上面代碼可以看到,在文件開始上傳后,會在 fileQueued 事件中動態創建的 id=fileList 元素中動態創建一個進度條容器,并根據上傳進度動態改變進度條的寬度,這樣就有了進度條的效果,需要注意的是,以上事件中動態生成的 dom 元素,例如文件列表、進度條的樣式都需要我們自己去寫, webuploader.css 中并沒有,這一點官網沒提醒,我第一次使用時,也被坑了

文件上傳成功、失敗、完成處理

文件上傳成功

可以在該事件回調函數中移除進度條、更改進度條狀態等操作

 

uploader.on( 'uploadSuccess', function( file,response ) { console.log('文件上傳成功',file,response)  $( '#'+file.id ).find('p.state').text('已上傳'); });

文件上傳失敗

可以在該事件回調函數中更改提示文本,改變進度條樣式,刪除上傳失敗的文件等操作

uploader.on( 'uploadError', function( file,reason ) {console.log('文件上傳失敗',file,reason)$( '#'+file.id ).find('p.state').text('上傳出錯');});

文件上傳完成

可以在該事件回調函數中更改提示文本,改變進度條樣式等操作

uploader.on( 'uploadComplete', function( file ) {console.log('文件上傳完成') $( '#'+file.id ).find('.progress').fadeOut();});

總結

以上所述是小編給大家介紹的Vue項目中使用WebUploader實現文件上傳的方法,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品成人av| 国产精品嫩草影院久久久| 91九色综合久久| 日韩综合视频在线观看| 国产精品小说在线| 国产精品v片在线观看不卡| 亚洲精品有码在线| 91国产美女在线观看| 91在线观看免费高清完整版在线观看| 日韩欧美大尺度| 欧美日韩在线影院| 日韩美女写真福利在线观看| 18一19gay欧美视频网站| 狠狠色狠狠色综合日日小说| 懂色av影视一区二区三区| 亚洲最新av网址| 久久影院免费观看| 91av中文字幕| 91国语精品自产拍在线观看性色| 亚洲a级在线观看| 国产视频精品va久久久久久| 91亚洲精品在线| 成人免费高清完整版在线观看| 精品一区二区电影| www.xxxx欧美| 欧美国产在线电影| 国产精品日韩欧美综合| 97超级碰碰碰久久久| 成人h视频在线| 欧美日韩亚洲成人| 欧美老肥婆性猛交视频| 亚洲毛片在线观看| 午夜精品久久久久久久久久久久久| 久久久极品av| 亚洲免费成人av电影| 亚洲第一页自拍| 久久久国产视频91| 国产精品嫩草影院一区二区| 欧美日韩一区免费| 亚洲国产精品久久91精品| 日韩中文在线中文网在线观看| 96精品久久久久中文字幕| 国产精品a久久久久久| 国外色69视频在线观看| 18久久久久久| 亚洲情综合五月天| 日韩精品在线观看一区二区| 久久久久久亚洲精品| 美女黄色丝袜一区| 在线视频欧美性高潮| 日韩中文字幕视频| 国产成人久久久| 国产精品入口日韩视频大尺度| 日韩亚洲成人av在线| 欧美日韩精品在线观看| 91精品在线国产| 不卡av日日日| 亚洲直播在线一区| 91中文字幕在线观看| xxxxx成人.com| 国产偷国产偷亚洲清高网站| 国产日本欧美一区二区三区| 97热精品视频官网| 亚洲小视频在线观看| 色一情一乱一区二区| 九九热精品视频国产| 欧美黑人一区二区三区| 亚洲性猛交xxxxwww| 亚洲性日韩精品一区二区| 国产精品自产拍在线观看| 欧美激情综合色综合啪啪五月| 久久久www成人免费精品张筱雨| 日韩**中文字幕毛片| 欧美一级在线播放| 欧美国产乱视频| 欧美激情精品久久久久久变态| 亚洲精品一区二区网址| 亚洲成av人影院在线观看| 亚洲欧美中文另类| 欧美怡春院一区二区三区| 成人亚洲综合色就1024| 尤物精品国产第一福利三区| 黄色成人av网| 亚洲视频免费一区| 亚洲一级黄色av| 日韩www在线| 日韩中文字幕在线看| 中文字幕精品在线视频| 91免费国产网站| 中文字幕精品—区二区| 欧美一级电影在线| 日韩在线中文视频| 日韩有码视频在线| 成人激情免费在线| 精品国产区一区二区三区在线观看| 欧美一区视频在线| 日本在线观看天堂男亚洲| 最新69国产成人精品视频免费| 欧洲成人在线观看| 中文字幕久热精品在线视频| 日韩欧美中文第一页| 亚洲欧洲国产伦综合| 国产精品久久97| 亚洲成人精品在线| 国产精品v日韩精品| www国产精品视频| 日韩小视频网址| 亚洲自拍中文字幕| 欧美多人爱爱视频网站| 亚洲欧美日韩成人| 欧美放荡办公室videos4k| 欧美丰满少妇xxxxx做受| 亚洲图片欧美日产| 国产成人精品国内自产拍免费看| 精品国产一区二区三区在线观看| 亚洲精品中文字幕有码专区| 国产成人精品视频在线观看| 青青草精品毛片| 亚洲变态欧美另类捆绑| 国产精品成人观看视频国产奇米| 亚洲一区二区三区四区视频| 91麻豆国产语对白在线观看| 日韩美女免费线视频| 成人精品视频99在线观看免费| 国产精品电影在线观看| 国产日韩欧美日韩大片| 日韩欧美在线视频免费观看| 久久久91精品| 久久久久久综合网天天| 国产精品一区二区女厕厕| 色婷婷**av毛片一区| 国产精品激情自拍| 中文字幕日韩欧美精品在线观看| 亚洲一区精品电影| 国产精品丝袜久久久久久高清| 欧美一级bbbbb性bbbb喷潮片| 色噜噜亚洲精品中文字幕| 亚洲欧美日韩在线高清直播| 亚洲自拍偷拍福利| 中文欧美在线视频| 亚洲无亚洲人成网站77777| 中文字幕亚洲欧美| 欧美黑人极品猛少妇色xxxxx| 久久99久久久久久久噜噜| 欧美性生交大片免费| 久久精品国产成人精品| 中文综合在线观看| 欧美高清视频在线播放| 97视频免费在线观看| 国内精品久久久久久| 91禁外国网站| 成人黄色免费网站在线观看| 亚洲精品一区二区网址| xxxx性欧美| 久热99视频在线观看| 亚洲大胆人体视频| 人体精品一二三区| 日韩视频免费在线观看| 国产精品嫩草影院久久久| 性欧美视频videos6一9| 色777狠狠综合秋免鲁丝| 国产成人精品视| 欧美xxxx综合视频| 亚洲国产精品女人久久久|