编写微信小程序时,用到 wx.uploadFile,用来上传图片+文本信息.然而在编写过程中,由于官方的 demo 和文档描述很少,在几个坑上耗费了不少时间.
这里分享一个和编码有关的坑,主要是由于真机预览时 formData 中的非字母、数字的 ASCII 编码的字符如中文、泰文传输到服务端将不会自动进行转码码,并会会产生乱码及溢出,从而导致错误。
微信的 uploadFile 类似与 html 中的form带文件上传的表单
( enctype=”multipart/form-data” ), 这样 post 上传的表单,可以包含文件,同时包含其它的键值数据。微信小程序用 uploadFile 实现类似的操作.
我的微信小程序端的uploadFile 代码如下 :
-
wx.uploadFile({
-
url: 'https://<upload_domain>/save',
-
filePath:photoPath, //待上传的图片,由 chooseImage获得
-
name:'food_image',
-
formData: {
-
latitude:0.0,
-
longitude:0.0,
-
restaurant_id:0,
-
city:'北京',
-
name:'beijing' // 名称
-
}, // HTTP 请求中其他额外的 form data
-
success: function(res){
-
console.log("addfood success",res);
-
},
-
fail: function(res) {
-
console.log("addfood fail",res);
-
},
-
})
-
},
服务端我用的 php 编写,这里接受文件的接口为 save ,我将 $_POST 和 $_FILES 里的数据直接输出到info.log 文件中用来进行调试.代码如下:
-
public function save(Request $request)
-
{
-
error_log("FILES:" . json_encode($_FILES) . "\r\n", 3, "./logs/info.log");
-
error_log