文檔地址:https://developer.qiniu.com/kodo/sdk/1283/javascript#2
npm引入
npm install qiniu-js
例子:
var observable = qiniu.upload(file, key, token, putExtra, config) var subscription = observable.subscribe(observer) // 上傳開始 // or var subscription = observable.subscribe(next, error, complete) // 這樣傳參形式也可以 subscription.unsubscribe() // 上傳取消
參數說明:
file:上傳的文件(files[0])
key:自定義的路徑
token:后台接口返回
config: object var config = { useCdnDomain: true, region: qiniu.region.z2 };
var putExtra = { fname: "", params: {}, mimeType: [] || null };
其它的具體參數可取值可以參考文檔
貼個具體上傳的代碼
selectPhoto(event){//上傳身份證明文檔(doc、docx) 照片 var self=this; self.photoWordFormat=0;//重置一下 if(event.target.files.length>0){ var dianIndex=event.target.files[0].name.lastIndexOf('.'), fileName, file=event.target.files[0]; if(dianIndex>-1){ fileName=event.target.files[0].name.slice(dianIndex); if(fileName==".png"||fileName==".jpg"||fileName==".gif"){ if(file.size>5120000){ tools.alert('文件太大了, 不允許超過5M~'); return; } self.photoWorld=event.target.files[0].name; self.photoWordFormat=1;//格式正確 var timestamp = (new Date()).valueOf(); var params={ file:file,//要上傳的文件 key:"paper_file/"+timestamp+self.photoWorld,//自定義文件地址 token:self.token, config:{ useCdnDomain: true, region:undefined }, putExtra:{ fname:self.photoWorld, params: {}, mimeType: [] || null }, } self.upLoadQiniu(params); }else{ tools.alert('請選擇png,jpg,gif格式的文件,並且文件不能為空'); return; } } } }, upLoadQiniu(params){//上傳至七牛雲 var self=this; self.loading= layer.load(1, {//請求未成功時出現loading頁 ,3代表一中效果 shade: [0.1,'#fff'] //0.1透明度的白色背景 }); // 上傳回調 function next(res){ // console.log(res); } function error(err){ console.log(err); } function complete(res){ var url="http://xxxxxx.cn/"+res.key; self.postObj.pic=url; layer.close(self.loading);//關閉loading效果 } var observable = qiniu.upload(params.file, params.key, params.token, params.putExtra, params.config); var subscription = observable.subscribe(next, error, complete) // 這樣傳參形式也可以 // subscription.unsubscribe() // 上傳取消 },
進一步在tools中封裝成一個公共方法
/** * * @param {*} file 上傳的文件 * @param {*} token 上傳需要的token */ function qiniuUpLoadFun(file,token){//七牛上傳方法 return new Promise(function(resolve){ var timestamp = (new Date()).valueOf(); var params={ file:file,//要上傳的文件 key:"paper_file/"+timestamp+file.name,//自定義文件地址 token:token, config:{ useCdnDomain: true, region:undefined }, putExtra:{ fname:file.name, params: {}, mimeType: [] || null }, } resolve(params); }).then(function(params){ return upLoadQiniu(params); }) } function upLoadQiniu(params){//上傳至七牛雲 return new Promise(function(resolve){ var loading= layer.load(1, {//請求未成功時出現loading頁 ,3代表一種效果 shade: [0.1,'#fff'] //0.1透明度的白色背景 }); // 上傳回調 function next(res){ // console.log(res); console.log("上傳中"); } function error(err){ console.log(err); } function complete(res){ var url="http://xxxxxx.cn/"+res.key; layer.close(loading);//關閉loading效果 resolve(url); } var observable = qiniu.upload(params.file, params.key, params.token, params.putExtra, params.config); var subscription = observable.subscribe(next, error, complete) // 這樣傳參形式也可以 // subscription.unsubscribe() // 上傳取消 }) }