解決小程序webview中無法上傳圖片問題

最近被支付寶小程序內嵌H5無法上傳圖片折磨到沒脾氣,H5本身上傳圖片沒問題,但是嵌套在小程序中就無法上傳。

在調試過程中發(fā)現(xiàn)可能是formData參數(shù)無法傳送給后臺造成的,試了很多解決方法都不行,最后只能利用web view通信方法以及與支付寶API相結合來解決。

首先,在H5上傳圖片時調用my.chooseImage方法:

my.chooseImage({
  chooseImage: 1,
  success: res => {
    const path = res.apFilePaths[0];
    // 成功后將路徑發(fā)送給小程序
    my.postMessage({'filePath':path})
  }
})

由于在H5中無法使用my.uploadFile方法,所以上傳至后臺操作需要在支付寶小程序中進行
支付寶小程序接收到路徑后,調用my.uploadFile方法進行圖片上傳

 my.uploadFile({
   url: apiUrl, // 自己的后臺地址
   fileType: 'image',
   fileName: 'file', // 參數(shù)key值
   filePath: path,
   headers:{
     'accesstoken':app.token  
   },
   success: res => {
     var result = JSON.parse(res.data);
     my.showToast({
       type: 'success',
       content: '上傳成功',
       duration: 1000,
     });
     // 向H5發(fā)送圖片路徑
     this.webViewContext.postMessage({'backImgUrl': result.data.url});
   },
   fail: function(res) {
     my.showToast({
       type: 'success',
       content: '上傳失敗',
       duration: 1000,
       success: () => {
       },
     });
   },
 });

最后,在H5 my.onMessage函數(shù)中接收小程序傳來的圖片地址,進行頁面渲染

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

友情鏈接更多精彩內容