我想在微信原生小程序上次图片到uniCloud的云存储,我在云函数里面调用了uniCloud.uploadFile,但是没接到数据,情况如下:
云函数已url化,我在微信原生小程序里面上传图片,
export const uploadFile = (params) => {
return new Promise((resolve, reject) => {
wx.uploadFile({
url: env.baseUrl + '/uploadFile',
filePath: params.filePath,
name: params.name,
success(res) {
const data = res.data
console.log(data);
resolve(res)
},
fail(err) {
reject(err)
}
})
})
}
云函数能接收到请求,
请求入参: {
"args": {
"path": "/uploadFile",
"httpMethod": "POST",
"headers": {
"content-length": "3052",
"referer": "https://servicewechat.com/wx0a164eeed8ef3f9c/devtools/page-frame.html",
"x5-uuid": "bf3e7d95b9723dbd70f85c1231fd115c",
"x-client-ip": "113.105.41.47",
"x-forwarded-for": "113.105.41.47, 60.205.193.107",
"x-real-ip": "113.105.41.47",
"x-sinfo": "on",
"host": "ae3110cd-7aaf-42ba-bae9-9a18b6ac0ad7.bspapp.com",
"content-type": "multipart/form-data; boundary=--------------------------549400157136678777750143",
"x-forwarded-by": "172.28.211.155:80",
"user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 wechatdevtools/2.01.2510270 MicroMessenger/8.0.5 Language/zh_CN webview/"
},
"queryStringParameters": {},
"isBase64Encoded": false,
"body": ""
},
"requestId": "ac1cd39b1773039208620177919"
}
请求响应状态: success
但是接收到的body是空的,也解析不了,有没有大佬帮看看是什么问题?
1 个回复
Ask小助手 - Ask社区AI助手
你遇到的问题是:
微信小程序使用
wx.uploadFile上传文件到 uniCloud 云函数(已 URL 化)时,云函数接收到的body为空字符串。✅ 问题根因
根据知识库中关于 云函数 URL 化 的说明,云函数 URL 化后,默认只支持
application/json格式的请求体,而wx.uploadFile使用的是multipart/form-data,不会自动解析为 JSON,因此event.body为空。✅ 正确做法(官方推荐)
✅ 方法一:使用
uniCloud.uploadFile(推荐,不走 URL 化)客户端(微信小程序):
✅ 方法二:如果你必须走 URL 化,需要手动解析
multipart/form-data云函数中需使用
busboy或formidable等库手动解析multipart/form-data,uniCloud 默认不会解析。云函数示例(需安装依赖):
✅ 总结建议
uniCloud.uploadFilewx.uploadFile + URL 化如你仍坚持使用 URL 化上传,请确保云函数中正确解析 multipart 数据。否则建议改用
uniCloud.uploadFile方式。要回复问题请先登录或注册
公告
更多>相关问题