基于vue axios上傳圖片到七牛云

1、優(yōu)點(diǎn)

  • 移動(dòng)端 和 pc 端通用
  • 可以自己添加上傳進(jìn)度條
  • 解釋了一些七牛的知識(shí)點(diǎn)

缺點(diǎn):一次不能上傳多張圖片,不能預(yù)覽,不能裁剪圖片。

2、代碼

<!--html-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/*">
//js
import axios from 'axios';

methods: {
    //觸發(fā)input change事件
    uploadInputchange(){
        let file = document.getElementById("uploadFileInput").files[0];   //選擇的圖片文件
        this.uploadImgToQiniu(file);
    },
    //上傳圖片到七牛
    uploadImgToQiniu(file){
        const axiosInstance = axios.create({withCredentials: false});    //withCredentials 禁止攜帶cookie,帶cookie在七牛上有可能出現(xiàn)跨域問題
        let data = new FormData();
        data.append('token', this.params.token);     //七牛需要的token,叫后臺(tái)給,是七牛賬號(hào)密碼等組成的hash
        data.append('file', file);
        axiosInstance({
            method: 'POST',
            url: 'http://upload.qiniup.com/',  //上傳地址
            data: data,
            timeout:30000,      //超時(shí)時(shí)間,因?yàn)閳D片上傳有可能需要很久
            onUploadProgress: (progressEvent)=> {
                //imgLoadPercent 是上傳進(jìn)度,可以用來添加進(jìn)度條
                let imgLoadPercent = Math.round(progressEvent.loaded * 100 / progressEvent.total);
            },
        }).then(data =>{
            document.getElementById("uploadFileInput").value = ''        //上傳成功,把input的value設(shè)置為空,不然 無法兩次選擇同一張圖片
            //上傳成功...  (登錄七牛賬號(hào),找到七牛給你的 URL地址) 和 data里面的key 拼接成圖片下載地址
        }).catch(function(err) {
            //上傳失敗
        });
    }
},

3、遇到的問題

3.1、微信等X5內(nèi)核瀏覽器不能選擇圖片(點(diǎn)擊圖片選擇沒有效果),

需要改變input accept 的值,很奇怪

<!--錯(cuò)誤-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/jpeg, image/png, image/gif">
<!--正確-->
<input @change="uploadInputchange"  id="uploadFileInput" type="file" accept="image/*">
3.2、input不能連續(xù)兩次 選擇同一張圖片

因?yàn)槲覀兪怯胕nput的change事件 觸發(fā) 成功選擇圖片,change事件觸發(fā)是需要 input 的value值 改變,但是連續(xù)兩次選擇同一張圖片,value值并沒有改變,所以就不會(huì)觸發(fā)input的 change事件。

所以上傳圖片成功,就把需要value值清空

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,715評(píng)論 19 139
  • 剛剛看了兩篇文章都是與癌癥有關(guān)的,看第一篇的時(shí)候感到眼淚在眼眶里打轉(zhuǎn),為女主角受到的病痛的折磨難過,為她有個(gè)不離不...
    博薇閱讀 320評(píng)論 0 1
  • 昨天剛拿到駕照,今早一早就去換了上海駕照。So happy! 大家都知道,在上海考駕照,又貴又慢。于是我就跑去考了...
    拉格朗日星閱讀 1,323評(píng)論 0 3
  • 在靈魂一角可能有著一座燃燒著熾熱火焰的火爐,然而無人前來取暖;過客只是瞥見煙囪的一抹。 ——文森特·梵高 ???
    可口可樂花花閱讀 218評(píng)論 0 0

友情鏈接更多精彩內(nèi)容