vue.js圖片轉Base64上傳圖片並預覽

對於前端人員來講,圖片處理是一個很常見的需求,因爲圖片稍微特殊,如今多數作法都是使用調用ajax接口經過http方法來提交,例如post方法提交,後臺處理後返回一個圖片路徑給前端,前端根據這個路徑寫入img標籤,可是基於當前的先後端分離的開發模式下,先後端代碼每每不在同一個系統目錄下,並且部署時可能liunx路徑與windows路徑不同,這樣後期路徑更改可能會致使維護困難問題出現。html

針對這種問題,這裏我推薦使用圖片轉base64格式,再發給後端,後端只需將轉碼結果存入數據庫便可,前端調用接口直接獲取到base64數據直接寫入img src 標籤便可前端

下面使用element ui upload組件實現思路html5

代碼以下:ajax

<el-upload
      ref='upload'
      :auto-upload='false' 
      :file-list="fileList" 
      :multiple='false'
      :limit="1"
      :on-exceed="handleExceed"
      :http-request="uploadFiles" 
      accept="image/jpeg,image/gif,image/png"
      action=''
      :on-change='changeUpload'           
      >
    <el-button slot="trigger" size="mini" type="primary">選取圖片</el-button>
    <span>&nbsp;</span>
    <el-button @click='uploadFiles' size="mini" type="primary">點擊上傳</el-button>
 </el-upload>

js部分數據庫

//點擊上傳圖片,上傳成功返回圖片路徑 
    uploadFiles(){
        var That=this;
      let file=this.$refs.upload.$refs['upload-inner'].$refs.input; //獲取文件數據
      let fileList=file.files;      
      var imgFile;
      let reader = new FileReader();     //html5讀文件
      reader.readAsDataURL(fileList[0]); //轉BASE64       
      reader.onload=function(e) {        //讀取完畢後調用接口
        imgFile = e.target.result;
        let obj={
            id: "loginLogo",
            configGroup: "logo",
            configItem : "loginLogo",
          itemValue : imgFile    
        }
        return BaseApi.uploadFiles(obj).then((res)=>{
            if(res.status=='SUCCESS'){
                AlertBox('圖片上傳成功!','success',true).then(()=>{
                    return That.getSysLogo(); //調用獲取base64數據接口
                });
            }else{
                Alert('圖片上傳失敗',res);
                return ''
            }
        })

      };          
    },

最後在界面img src標籤中綁定That.getSysLogo()接口返回的base64字符串便可!
以上就是本文所有內容。windows

相關文章
相關標籤/搜索