h5+app gallery 獲取手機相冊圖片並上傳,最后在把網絡圖片轉碼為base64


 // 點擊選擇手機相冊圖片(我這點用的是多選) 詳情見 http://www.html5plus.org/doc/zh_cn/gallery.html#plus.gallery.GallerySuccessCallback
    btn_img(){
var lfs = null plus.gallery.pick((e) => { for(var i in e.files){ lfs=e.files;
            //根據拿到的圖片地址上傳到服務器
this.fileUploader(lfs[i]) } }, function ( e ) { console.log( "取消選擇圖片" ); },{filter:"image",multiple:true,selected:lfs,maximum:3,system:false});// 最多選擇3張圖片 ,這個配置也參見上面的詳情 },


  
  //上傳到服務器 詳情見 http://www.html5plus.org/doc/zh_cn/uploader.html#plus.uploader.createUpload
     async fileUploader(filePath){
        // 獲取token 
        let token = '我的token參數';
    
        return await new Promise( (resolve, reject) => {
            console.log("開始上傳!")
       // token 我上傳時需要的參數
       // localStorage.upload_url + "api/post/file  要上傳的服務器地址
            let task = plus.uploader.createUpload(localStorage.upload_url + "api/post/file?token=" + token
              { method:"POST",blocksize:204800,priority:100 },
              ( t, status ) => {
                // 上傳完成
                if(status == 200){
                  let responseTextJson = JSON.parse(t.responseText);
                  if(responseTextJson && responseTextJson.errorCode == 200 && responseTextJson.errorMessage == 'SUCCESS'){
                      console.log(responseTextJson,'請求成功返回的信息')
                    resolve(responseTextJson) //拋出結果,使用在最下面
                  }else{
                   console.log("服務錯誤,請稍后在試!")
                  }
                }else{
                  console.log(JSON.stringify(t))
                  console.log("網絡錯誤,請稍后在試!")
                }
              }
            );
       //添加上傳文件
       // filePath 上傳文件的路徑(僅支持本地文件路徑)詳情見 http://www.html5plus.org/doc/zh_cn/uploader.html#plus.uploader.Upload.addFile
 
            task.addFile(filePath, {key: "file"} );
            // 開始上傳
            task.start();
          }
        ).then(
          // 成功,這里就是上面拋出的結果
          (res) => {
            if(res.errorCode === 200){
                console.log('返回的文件路徑',res.result);
          var url = res.result
          //將網絡圖片轉碼為base64
                 this.getBase64(url).then((base64) => {
                    //得到轉碼后的結果
            console.log(base64)
                 },function(err){
                     console.log(err);//打印異常信息
                });  
            }else{
               console.log('發送失敗!');
            }
          },
          // 失敗
          (err) => {
            console.log(err);
            alter(err);
          }
        )
      },
 
 
   
    getBase64(img){
        function getBase64Image(img,width,height) {//width、height調用時傳入具體像素值,控制大小 ,不傳則默認圖像大小
          var canvas = document.createElement("canvas");
          canvas.width = width ? width : img.width;
          canvas.height = height ? height : img.height;
 
          var ctx = canvas.getContext("2d");
          ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
          var dataURL = canvas.toDataURL();
          return dataURL;
        }
        var image = new Image();
        image.crossOrigin = '';
        image.src = img;
        var deferred=$.Deferred();
        if(img){
          image.onload =function (){
            deferred.resolve(getBase64Image(image));//將base64傳給done上傳處理
          }
          return deferred.promise();//問題要讓onload完成后再return sessionStorage['imgTest']
        }
      },

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM