亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳的方法

 更新時(shí)間:2019年07月21日 08:30:22   作者:月半小夜曲  
WebUploader是由 Baidu WebFE(FEX) 團(tuán)隊(duì)開(kāi)發(fā)的一個(gè)簡(jiǎn)單的以 HTML5為主 , FLASH為輔 的現(xiàn)代 文件上傳組件 。這篇文章主要介紹了在Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳,需要的朋友可以參考下

簡(jiǎn)介:

WebUploader是由 Baidu WebFE(FEX) 團(tuán)隊(duì)開(kāi)發(fā)的一個(gè)簡(jiǎn)單的以 HTML5為主 , FLASH為輔 的現(xiàn)代 文件上傳組件 。在現(xiàn)代的瀏覽器里面能充分發(fā)揮HTML5的優(yōu)勢(shì),同時(shí)又 不摒棄主流IE瀏覽器 ,沿用原來(lái)的FLASH運(yùn)行時(shí), 兼容IE6+,iOS 6+, android 4+ 。兩套運(yùn)行時(shí),同樣的調(diào)用方式,可供用戶任意選用。采用 大文件分片并發(fā)上傳 ,極大的提高了文件上傳效率。

分片、并發(fā)

分片 與 并發(fā) 結(jié)合,將一個(gè)大文件分割成多塊, 并發(fā)上傳 ,極大地提高大文件的上傳速度。

當(dāng) 網(wǎng)絡(luò)問(wèn)題 導(dǎo)致傳輸錯(cuò)誤時(shí),只需要 重傳出錯(cuò)分片 ,而不是整個(gè)文件。另外分片傳輸能夠更加實(shí)時(shí)的跟蹤上傳進(jìn)度。

預(yù)覽、壓縮

支持常用圖片格式jpg,jpeg,gif,bmp,png 預(yù)覽與壓縮 ,節(jié)省網(wǎng)絡(luò)數(shù)據(jù)傳輸。

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

多途徑添加文件

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

粘貼功能主要體現(xiàn)在當(dāng)有圖片數(shù)據(jù)在剪切板中時(shí)(截屏工具如QQ(Ctrl + ALT + A), 網(wǎng)頁(yè)中右擊圖片點(diǎn)擊復(fù)制), Ctrl + V 便可添加此圖片文件。

HTML5 & FLASH

兼容主流瀏覽器 ,接口一致,實(shí)現(xiàn)了兩套運(yùn)行時(shí)支持,用戶無(wú)需關(guān)心內(nèi)部用了什么內(nèi)核。

同時(shí)Flash部分沒(méi)有做任何UI相關(guān)的工作,方便不關(guān)心flash的用戶擴(kuò)展和自定義業(yè)務(wù)需求

MD5秒傳

當(dāng)文件體積大、量比較多時(shí),支持上傳前做文件 md5值驗(yàn)證 ,一致則可直接跳過(guò)。

如果服務(wù)端與前端統(tǒng)一修改算法, 取段md5 ,可大大 提升驗(yàn)證性能 ,耗時(shí)在20ms左右

 

下載webuploader

下載并解壓后,文件目錄結(jié)構(gòu)如下

Uploader.swf 

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

注意:這里的 css 文件很少,只是那個(gè)上傳文件按鈕的樣式,其他的樣式需要自己書(shū)寫(xiě),也可以直接追加在當(dāng)前 vue 組件的樣式里面

引入webuploader

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

方法1:直接引入文件

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

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

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

 

重啟項(xiàng)目后報(bào)錯(cuò)了,說(shuō)缺少依賴 jquery ,打開(kāi)源碼 webuploader.js 看一下

 

原來(lái) webuploader 是依賴于 juqery 或者 Zepto 的,那我們引入 jquery ,我們?nèi)?jquery 官網(wǎng)下載 jquery ,并在 index.html 中引入,注意,一定要在 webuploader.min.js 之前引入,在這里我下載的是 1.12.4 版本

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

寫(xiě)一個(gè)Demo

HTML部分

App.vue

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

JS部分,初始化 webuploader

在 Vue 的 mounted 周期內(nèi)實(shí)例化 webuploader 并進(jìn)行配置

App.vue

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

文件加入隊(duì)列前

可以在該事件回調(diào)函數(shù)中對(duì)文件類型進(jìn)行篩選,或者根據(jù)文件大小決定是否開(kāi)啟分片上傳

 

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

文件加入隊(duì)列后

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

 

點(diǎn)擊 選擇文件 按鈕后,選擇一個(gè)文件,就會(huì)如上圖所示,出現(xiàn)文件列表,從代碼可以看出,他是在選擇文件之后,動(dòng)態(tài)添加的的 dom ,顯示文件名稱以及狀態(tài),關(guān)于文件的詳細(xì)信息,則可以從 fileQueued 事件的回調(diào)函數(shù)的參數(shù) file 獲取,我們打印一下 file

 

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

文件上傳中

主要利用了 webuploader 的 uploadProgress 事件,該事件會(huì)在文件上傳過(guò)程中觸發(fā),可以利用該事件創(chuàng)建進(jìn)度條

// 文件上傳過(guò)程中創(chuàng)建進(jìn)度條實(shí)時(shí)顯示。
  uploader.on( 'uploadProgress', function( file, percentage ) {
  console.log('文件上傳中',file,percentage)
   var $li = $( '#'+file.id ),
    $percent = $li.find('.progress .progress-bar');
   // 避免重復(fù)創(chuàng)建
   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 + '%' ); //根據(jù)上傳進(jìn)度改變進(jìn)度條寬度
  });

 

uploadProgress 事件的回調(diào)函數(shù)的參數(shù) file 是文件的一些信息, percentage 則是文件上傳進(jìn)度,1為上傳完畢,從上面代碼可以看到,在文件開(kāi)始上傳后,會(huì)在 fileQueued 事件中動(dòng)態(tài)創(chuàng)建的 id=fileList 元素中動(dòng)態(tài)創(chuàng)建一個(gè)進(jìn)度條容器,并根據(jù)上傳進(jìn)度動(dòng)態(tài)改變進(jìn)度條的寬度,這樣就有了進(jìn)度條的效果,需要注意的是,以上事件中動(dòng)態(tài)生成的 dom 元素,例如文件列表、進(jìn)度條的樣式都需要我們自己去寫(xiě), webuploader.css 中并沒(méi)有,這一點(diǎn)官網(wǎng)沒(méi)提醒,我第一次使用時(shí),也被坑了

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

文件上傳成功

可以在該事件回調(diào)函數(shù)中移除進(jìn)度條、更改進(jìn)度條狀態(tài)等操作

 

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

文件上傳失敗

可以在該事件回調(diào)函數(shù)中更改提示文本,改變進(jìn)度條樣式,刪除上傳失敗的文件等操作

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

文件上傳完成

可以在該事件回調(diào)函數(shù)中更改提示文本,改變進(jìn)度條樣式等操作

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

總結(jié)

以上所述是小編給大家介紹的Vue項(xiàng)目中使用WebUploader實(shí)現(xiàn)文件上傳的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

  • vue?使用addRoutes動(dòng)態(tài)添加路由及刷新頁(yè)面跳轉(zhuǎn)404路由的問(wèn)題解決方案

    vue?使用addRoutes動(dòng)態(tài)添加路由及刷新頁(yè)面跳轉(zhuǎn)404路由的問(wèn)題解決方案

    我自己使用addRoutes動(dòng)態(tài)添加的路由頁(yè)面,使用router-link標(biāo)簽可以跳轉(zhuǎn),但是一刷新就會(huì)自動(dòng)跳轉(zhuǎn)到我定義的通配符?*?指向的404路由頁(yè)面,這說(shuō)明沒(méi)有找到指定路由才跳到404路由的,這樣的情況如何處理呢,下面小編給大家分享解決方案,一起看看吧
    2023-10-10
  • Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色

    Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色

    本文主要介紹了Vue使用ElementUI動(dòng)態(tài)修改table單元格背景顏色或文本顏色,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • 詳解Vue.js3.0 組件是如何渲染為DOM的

    詳解Vue.js3.0 組件是如何渲染為DOM的

    這篇文章主要介紹了詳解Vue.js3.0 組件是如何渲染為DOM的 ,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Vue 解決路由過(guò)渡動(dòng)畫(huà)抖動(dòng)問(wèn)題(實(shí)例詳解)

    Vue 解決路由過(guò)渡動(dòng)畫(huà)抖動(dòng)問(wèn)題(實(shí)例詳解)

    這篇文章主要介紹了Vue 解決路由過(guò)渡動(dòng)畫(huà)抖動(dòng)問(wèn)題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Vue中全局變量的定義和使用

    Vue中全局變量的定義和使用

    這篇文章主要介紹了vue中全局變量的定義和使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • 一文搞明白vue開(kāi)發(fā)者vite多環(huán)境配置

    一文搞明白vue開(kāi)發(fā)者vite多環(huán)境配置

    Vue是一款流行的JavaScript框架,用于開(kāi)發(fā)動(dòng)態(tài)單頁(yè)應(yīng)用程序,本地安裝和環(huán)境配置是學(xué)習(xí)和使用Vue的第一步,下面這篇文章主要給大家介紹了關(guān)于vue開(kāi)發(fā)者vite多環(huán)境配置的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • Vue插槽的作用

    Vue插槽的作用

    插槽(slot)是 vue 為組件的封裝者提供的能力。允許開(kāi)發(fā)者在封裝組件時(shí),把不確定的、希望由用戶指定的部分定義為插槽??梢园巡宀壅J(rèn)為是組件封裝期間,為用戶預(yù)留的內(nèi)容的占位符
    2022-09-09
  • VUE前后端學(xué)習(xí)tab寫(xiě)法實(shí)例

    VUE前后端學(xué)習(xí)tab寫(xiě)法實(shí)例

    在本篇文章里小編給大家分享了關(guān)于VUE前后端學(xué)習(xí)tab寫(xiě)法實(shí)例以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-08-08
  • 詳解使用vue-admin-template的優(yōu)化歷程

    詳解使用vue-admin-template的優(yōu)化歷程

    這篇文章主要介紹了詳解使用vue-admin-template的優(yōu)化歷程,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 1分鐘Vue實(shí)現(xiàn)右鍵菜單

    1分鐘Vue實(shí)現(xiàn)右鍵菜單

    今天給大家分享的是,如何在最短的時(shí)候內(nèi)實(shí)現(xiàn)右鍵菜單。高效實(shí)現(xiàn)需求,避免重復(fù)造輪子。感興趣的可以了解一下
    2021-10-10

最新評(píng)論