vue.js写真をBase 64に変えて写真をアップロードしてプレビューする実現方法


前端者にとっては、ピクチャ処理は一般的な需要であり、ピクチャはやや特殊であるため、ajaxインターフェースを呼び出してhttp方法で提出することが多い。例えば、postメソッドが提出され、バックグラウンド処理後に1つのピクチャパスを返してフロントエンドにこの経路に従ってラベルを書き込むが、現在の前後端分離の開発モードに基づいて、前後のエンドコードはよく同じシステムディレクトリの下にないです。また、展開時にはLiunxパスとwindowsパスが違っています。このように後期パスの変更はメンテナンス困難を招くかもしれません。
このような問題に対して、ここでは写真を使ってバックエンドに転送してください。バックエンドはトランスコードの結果をデータベースに保存すればいいです。フロントエンドはインターフェースを呼び出して直接base 64のデータを取得して、直接にcrcラベルに書き込んでください。
以下はelement ui uploadコンポーネントを使ってアイデアを実現します。
コードは以下の通りです

 <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 ''
      }
    })

   };     
  },

最後にインターフェースの中でThat.getsSysLogo()インターフェースの返すbase 64文字列をバインドすればいいです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。