摘要:目前可能是七牛瀏覽器文件上傳的最好實現(xiàn)。任務(wù)攔截器攔截任務(wù)返回,任務(wù)將會從任務(wù)隊列中剔除,不會被上傳中斷任務(wù),返回,任務(wù)隊列將會在這里中斷,不會執(zhí)行上傳操作。請上傳小于的文件你可以添加多個任務(wù)攔截器選擇上傳文件確定后該生命周期函數(shù)會被回調(diào)。
qiniu4js
qiniu4js目前可能是七牛JavaScript瀏覽器文件上傳的最好實現(xiàn)。
使用TypeScript編寫,不依賴任何三方庫,純代碼不包含任何界面元素,使用HTML5 文件API上傳(目前和未來不會支持HTML4以及FLASH)。
支持UMD模塊導入。
已完成[x] 文件直傳
[x] 分塊上傳
[x] 多文件上傳
[x] token共享
[x] 自動重傳
[x] 任務(wù)攔截器
[x] 文件過濾
[x] 多實例(可以創(chuàng)建多個上傳實例,互不影響)
待完成[ ] 自定義變量
[ ] 圖片裁剪
[ ] 圖片質(zhì)量壓縮
[ ] 使用七牛API進行圖片處理
安裝sudo npm install qiniu4js --save導入 瀏覽器
es6
import {UploaderBuilder} from "Qiniu"CommonJS
{UploaderBuilder} = require("Qiniu")使用方法
//構(gòu)建uploader實例 let uploader = new Qiniu.UploaderBuilder() .debug(false)//開啟debug,默認false .domain("http://img.yourdomain.com")//默認為http://upload.qiniu.com .retry(0)//設(shè)置重傳次數(shù),默認0,不重傳 .size(1024*1024)//分片大小,最多為4MB,單位為字節(jié),默認1MB .chunk(true)//是否分塊上傳,默認true,當chunk=true并且文件大于4MB才會進行分塊上傳 .auto(true)//選中文件后立即上傳,默認true .multiple(true)//是否支持多文件選中,默認true .accept([".gif",".png","video/*"])//過濾文件,默認無,詳細配置見http://www.w3schools.com/tags/att_input_accept.asp .tokenShare(true)//在一次上傳隊列中,是否分享token,如果為false每上傳一個文件都需要請求一次Token,默認true .tokenFunc(function (setToken,task) { //token獲取函數(shù),token獲取完成后,必須調(diào)用`setToken(token);`不然上傳任務(wù)不會執(zhí)行。 setTimeout(function () { setToken("token"); }, 1000); }) //任務(wù)攔截器 .interceptor({ //攔截任務(wù),返回true,任務(wù)將會從任務(wù)隊列中剔除,不會被上傳 onIntercept: function (task) { return task.file.size > 1024 * 1024; }, //中斷任務(wù),返回true,任務(wù)隊列將會在這里中斷,不會執(zhí)行上傳操作。 onInterrupt: function (task) { if (this.onIntercept(task)) { alert("請上傳小于1m的文件"); return true; } else { return false; } }, } //你可以添加多個任務(wù)攔截器 .interceptor({...}) .listener({ onReady(tasks) { //選擇上傳文件確定后,該生命周期函數(shù)會被回調(diào)。 },onStart(tasks){ //開始上傳 },onTaskGetKey(task){ //為每一個上傳的文件指定key,如果不指定則由七牛服務(wù)器自行處理 return "test.png"; },onTaskProgress: function (task) { //每一個任務(wù)的上傳進度,通過`task.progress`獲取 console.log(task.progress); },onTaskSuccess(task){ //一個任務(wù)上傳成功后回調(diào) },onTaskFail(task) { //一個任務(wù)在經(jīng)歷重傳后依然失敗后回調(diào)此函數(shù) },onTaskRetry(task) { //開始重傳 },onFinish(tasks){ //所有任務(wù)結(jié)束后回調(diào),注意,結(jié)束不等于都成功,該函數(shù)會在所有HTTP上傳請求響應(yīng)后回調(diào)(包括重傳請求)。 }} }).build(); //如果auto設(shè)置為false,則需要手動啟動上傳。 //uploader.start(); //由于安全原因,display:none的file input,無法通過代碼調(diào)用click方法,必須通過如下處理,讓用戶來實現(xiàn)click,從而打開文件選擇窗口: //你可以自行監(jiān)聽HTML元素的click事件,在回調(diào)函數(shù)內(nèi)部打開文件選擇窗口。你也可以使用jQuery監(jiān)聽,下面使用的是原生的JavaScript的方式。 button = document.getElementById("button"); button.addEventListener("click", function () { uploader.chooseFile(); }版本說明
0.0.9 (2016-10-21)
分塊上傳,自定義上傳域名
0.0.8 (2016-10-19)
fix bug,當沒有選中任何文件的時候,會觸發(fā)上傳函數(shù)。
0.0.7 (2016-10-19)
更換上傳域名為upload.qiniu.com
0.0.6 (2016-10-19)
繞過緩存,避免每次都上傳同樣的文件。
0.0.5 (2016-10-19)
tokenFunc(setToken,task)增加task參數(shù)
0.0.4 (2016-10-19)
修復了一個關(guān)于accept選項的bug。
0.0.3 (2016-10-19)
任務(wù)攔截器實現(xiàn)。
0.0.2 (2016-10-19)
基本功能的實現(xiàn)。
維護人知乎 : @面條
Github : @lsxiao
開源許可MIT
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/91016.html
摘要:和七牛賬號里面提供。自己設(shè)定的七牛云存儲空間名,創(chuàng)建存儲空間的時候注意地區(qū)應(yīng)該默認是華東,不一樣地區(qū)需要修改下里面指定的上傳的域名,請去參考官方文檔。若開啟該選項,為自動生成上傳成功后的文件名。 先放上幾個用到的七牛官方網(wǎng)站: JavaScript SDK地址需要在頁面中先引入 plupload 提供的 plupload.full.min.js(生產(chǎn)環(huán)境)然后再引入SDK里的 qini...
摘要:后來查閱了資料后自己手動實現(xiàn)了文件切片上傳到服務(wù)器基本需求已經(jīng)實現(xiàn),但由于效率及穩(wěn)定性問題后來決定還是直傳文件到七牛云??偨Y(jié)起來七牛云上傳的套路就是后臺為你提供或者獲取的接口地址之后上傳的時候要帶上這個。 起因 最近在工作中有個上傳大文件的需求,原先咨詢過組里的大佬給我推薦了百度的webupload,但后來引入之后發(fā)現(xiàn)它是基于jquery封裝的。由于本身項目是基于vue開發(fā)的所以與j...
摘要:以下中使用瀏覽器端上傳圖片到七牛云,下面只是做一些簡單的流程實例。你的控制器地址請求成功之后,調(diào)用剛剛寫好的方法,把傳入過去讓頁面初始化的時候就請求這里差不多就可以啦,更多的操作參考文檔七牛云官方文檔 以下Laravel中使用瀏覽器端上傳圖片到七牛云,下面只是做一些簡單的流程實例。詳情請看官方文檔七牛云官方j(luò)s文檔 1. 首先引入相應(yīng)的js文件,下面是通過CDN引入的Staticfi...
摘要:以下中使用瀏覽器端上傳圖片到七牛云,下面只是做一些簡單的流程實例。你的控制器地址請求成功之后,調(diào)用剛剛寫好的方法,把傳入過去讓頁面初始化的時候就請求這里差不多就可以啦,更多的操作參考文檔七牛云官方文檔 以下Laravel中使用瀏覽器端上傳圖片到七牛云,下面只是做一些簡單的流程實例。詳情請看官方文檔七牛云官方j(luò)s文檔 1. 首先引入相應(yīng)的js文件,下面是通過CDN引入的Staticfi...
閱讀 961·2023-04-26 02:49
閱讀 1172·2021-11-25 09:43
閱讀 2541·2021-11-18 10:02
閱讀 2919·2021-10-18 13:32
閱讀 1281·2019-08-30 13:54
閱讀 2074·2019-08-30 12:58
閱讀 3008·2019-08-29 14:06
閱讀 2154·2019-08-28 18:10