摘要:首先,和阿里云上傳圖片結(jié)合參考了這位朋友的文章,成功的解決了我用阿里云上傳圖片前的一頭霧水。我把一個(gè)上傳組件放在了我的打開阿里云上傳組件
首先,vue和阿里云oss上傳圖片結(jié)合參考了 這位朋友的 https://www.jianshu.com/p/645... 文章,成功的解決了我用阿里云oss上傳圖片前的一頭霧水。
該大神文章里有寫github地址,里面的2.0分支采用vue2.0實(shí)現(xiàn),只不過這個(gè)上傳圖片用的是分片上傳,即斷點(diǎn)續(xù)傳,分片上傳由于一片是以100kb為起始的,所以當(dāng)圖片大小小于100kb的時(shí)候不分片,可以正常上傳,當(dāng)大于100k的時(shí)候,會(huì)報(bào)錯(cuò)如下:
One or more of the specified parts could not be found or the specified entit
當(dāng)報(bào)這個(gè)錯(cuò)誤的時(shí)候,請(qǐng)看看阿里云自己的后臺(tái)有沒有按文檔設(shè)置
文檔地址:https://help.aliyun.com/docum...
exopose header 要設(shè)置為 ETag
當(dāng)成功設(shè)置之后,大于100k的就可以成功上傳了,但是返回的數(shù)據(jù)和小于100k的不太一樣,
大于100k之后沒有直接返回url,只有在res.requestUrls 里可以看到對(duì)應(yīng)的url ,但是后面還會(huì)有一個(gè)分片上傳的id。
返回?cái)?shù)據(jù)對(duì)應(yīng)如下:
小于100k:
大于100k時(shí):
看了官方文檔有關(guān)分片上傳的方法,表示并沒有看懂如何把分片集合上傳,文檔在此,https://help.aliyun.com/docum... 如有大神看懂,還請(qǐng)多多指教??!不勝感激??!
最終我用截取字符串截取到大于100k的圖片的url,實(shí)現(xiàn)客戶端預(yù)覽。
我的最終代碼如下(這是vue中綁定在 input file上的一個(gè)函數(shù)):
onFileChange(e) { const _this = this; axios({ url: "/oss/get_token", method: "GET", headers: {"w-auth-token": this.token} }).then((res) => { var client = new OSS.Wrapper({ accessKeyId: res.data.accessKeyId, accessKeySecret: res.data.accessKeySecret, stsToken: res.data.securityToken, region: _this.region, bucket: _this.bucket }); let files = e.target.files || e.dataTransfer.files; if (!files.length)return; if (files.length) { const fileLen = files.length; const currentImgLength=_this.imgList.length; const restLength=10-currentImgLength; if(currentImgLength>10){ Toast("圖片最多上傳十張"); }else{ if(fileLen<=restLength){ for (let i = 0; i < fileLen; i++) { const file = files[i]; let date = new Date(); let path="wap/life/release/"+this.id+"/"+date.getFullYear()+(date.getMonth()+1)+date.getDate()+date.getHours()+date.getMinutes()+date.getSeconds()+date.getMilliseconds()+ "." + file.name.split(".").pop(); let size=file.size; if(Math.round(size/(1024*1024)*100)/100<=2){ client.multipartUpload(path, file).then((results) => { if(size>=100*1024){ _this.imgList.push(results.res.requestUrls[0].split("?")[0]); }else{ _this.imgList.push(results.url); } console.log(results); }).catch((err) => { Toast("上傳圖片失敗,請(qǐng)重試!"); }); }else{ Toast("上傳圖片不能超過2M,請(qǐng)重試!"); } } }else{ Toast("圖片最多上傳十張"); } } } }); },添加照片
這個(gè)上傳圖片的方法實(shí)現(xiàn)阿里云多圖上傳,圖片大小限制,調(diào)用后臺(tái)返回的接口 /oss/get_token
獲得相應(yīng)的secret。運(yùn)用了mint-ui組件。
我把一個(gè)upload上傳組件放在了我的github:打開vue+阿里云oss上傳組件
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90656.html
摘要:騰訊云和阿里云針對(duì)按量計(jì)費(fèi)的云服務(wù)器,均要求賬戶內(nèi)有一定的余額騰訊云好像沒有最低充值要求,充值元即可阿里云要求賬戶內(nèi)至少有元余額。基于上述原因,我們分別在騰訊云和阿里云創(chuàng)建最低配版的云數(shù)據(jù)庫和。 云計(jì)算市場(chǎng)爭(zhēng)奪阿里云作為名副其實(shí)的國內(nèi)業(yè)界第一,名聲非常大,不過最近 IT 之家的事鬧出來之后,我有點(diǎn)慶幸最終沒有選擇它。騰訊云算是業(yè)界老二,而且有著騰訊這個(gè)強(qiáng)大的靠山,云服務(wù)產(chǎn)品的種類和質(zhì)量...
摘要:最近國內(nèi)公有云服務(wù)商掀起了一輪降價(jià)浪潮,繼阿里云上月宣布降價(jià)之后,騰訊云也在本月初推出全線降價(jià)優(yōu)惠。上個(gè)月阿里云在云棲大會(huì)上宣布降價(jià),昨天騰訊云方面也推出了全線降價(jià)活動(dòng),對(duì)包年包月產(chǎn)品均提供了大幅度的降價(jià)優(yōu)惠。 最近國內(nèi)公有云服務(wù)商掀起了一輪降價(jià)浪潮,繼阿里云上月宣布降價(jià)之后,騰訊云也在本月初推出全線降價(jià)優(yōu)惠。本文希望從云計(jì)算用戶的角度,通過真實(shí)的產(chǎn)品使用、評(píng)測(cè),對(duì)降價(jià)后各家的產(chǎn)品性價(jià)...
閱讀 3306·2021-11-24 09:39
閱讀 2823·2021-10-12 10:20
閱讀 1922·2019-08-30 15:53
閱讀 3086·2019-08-30 14:14
閱讀 2615·2019-08-29 15:36
閱讀 1131·2019-08-29 14:11
閱讀 1963·2019-08-26 13:51
閱讀 3420·2019-08-26 13:23