wx.uploadFile({
url:
filePath: this.data.avatarUrl, // 临时路径
name: 'file', // 服务器接收的字段名
data: wx.getStorageSync('openid'),
success(uploadRes) {
console.log('图片上传成功',uploadRes);
onChooseAvatar(e) {
const { avatarUrl } = e.detail
this.setData({
avatarUrl,
})
},
filePath: this.data.avatarUrl, // 临时路径这样写对吗?为什么服务器返回上传失败
服务器源码:
function image(){
$input = input();
$id = isset($input['id']) ? $input['id'] : '';
$uploadDir = Config::get('filesystem.disks.public.root') . 'userimage';
$file = Request::instance()->file('image');
$info = $file->move($uploadDir);
if ($info) {
$imageUrl = Config::get('view_replace_str.__UPLOAD__') . $info->getSaveName();
return $this->success('图片上传成功', ['url' => $imageUrl,$id]);
} else {
return $this->error('图片上传失败:' . $file->getError());
}
}
正常请求结果如下{
"code": 1,
"msg": "图片上传成功",
"time": "1715419323",
"data": {
"0": "456",
"url": "20240511/eeacd39a338200be41bc38b2d3c51ea3.png"
}
}
获取头像返回的是http公网访问的路径,你需要通过wx.downloadFile下载到本地,获取本地的临时路径再上传。
但是手机端和PC端路径是不一样的,建议用手机端试。