/**
* uni upload 基础封装
* @param filePath
* @param formData
* @param uploadUrl
* @param header
* @param name
* @returns {Promise<unknown>}
*/
const upload = (filePath, formData = {}, uploadUrl = '', header = {}, name = 'file') => {
return new Promise((resolve, reject) => {
uni.uploadFile({
url: uploadUrl,
filePath: filePath,
name: name,
header: header,
formData: formData,
success(res) {
console.log('success.res', res);
const {statusCode, data} = res;
if (statusCode === 200) {
const response = JSON.parse(data);
resolve(response);
}
reject(res);
},
fail(res) {
console.log('fail.res', res);
reject(res);
},
complete: (res) => {
console.log('complete.res', res);
}
})
});
};
- 发布:2020-07-09 10:43
- 更新:2023-09-05 12:02
- 阅读:5500
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS Catalina10.15.5
手机系统: Android
手机系统版本号: Android 7.1.1
手机厂商: vivo
手机机型: X9
页面类型: vue
打包方式: 云端
项目创建方式: CLI
CLI版本号: 4.3.1
示例代码:
操作步骤:
服务端返回500响应码,并返回json数据
服务端返回500响应码,并返回json数据
预期结果:
响应码为500时,res.data应该也能获取到服务端返回的数据
响应码为500时,res.data应该也能获取到服务端返回的数据
实际结果:
响应码为500时,res.data为请求的url
响应码为500时,res.data为请求的url
bug描述:
uni.uploadFile 服务端返回HTTP响应码为500时,安卓中无法获取响应数据,success,complete回调函数中打印数据 res, res.statusCode=500,res.data的值为请求的url,而非服务端返回的响应信息,H5中可以正常获取响应信息
最佳回复
我这边app是使用uni.uploadFile进行上传,图片上传成功了,然后走下面的别的验证逻辑,会抛出异常,我在前端success里会接到下图这样的异常,但异常信息不是我主动抛出的那个,而是看到返回500,data里面变成url了,请问这个是什么问题?
-
回复 DCloud_Android_DQQ: 是的,我抛出的也是500,但data信息不是我抛出的,这里的data好像是自动加上的,我抛出的具体的文字描述
2021-09-22 14:52
@DCloud_Android_DQQ
选择图片上传之后报422,正常会接收到后台返回的提示语,目前H5正常,App端接收到一个url链接
注意:需要在App端才能复现,当初是在浏览器调试好,打包App之后发现没有提示语,才知道有这么个问题,你下载了demo之后和我说一下,我把demo删掉
请求回调:
success: (res) => {
if (res.statusCode == 200 || res.statusCode == 201) {
resolve(submitStatus(file.uri, 'success'))
} else {
console.log(res)
resolve(submitStatus(file.uri, 'fail'))
}
},
fail(err){
console.log(err)
resolve(submitStatus(file.uri, 'fail'))
},
返回值:
{
"data": "https://infinite-apim.azure-api.net/xxxxxxxxxxxx",
"statusCode": 400,
"errMsg": "uploadFile:ok"
}
我这边只能在success的回调的else中打印res,fail的分支一直都进不去
2***@qq.com
我上传文件选择不压缩文件,返回500,我默认压缩就能上传成功,请问这是什么问题
2022-10-17 16:32
DCloud_Android_DQQ
回复 2***@qq.com: 这个问题已修复的。 你新开个问题
2022-10-31 15:29
3***@qq.com
回复 DCloud_Android_DQQ: 我上传图片,H5可以请求到上传成功,真机模拟就返回上传失败说我给后端传值的字段名不存在,请问h5跟app的上传有什么差异嘛
2022-11-17 17:55
DCloud_Android_DQQ
回复 3***@qq.com: 有差异。不同平台的标准都遵循uni-app 标准。标准之外实现可能有差异
2022-11-18 11:16
x***@163.com
后端返回了statuscode=400,错误信息也被替换为url了
2023-02-14 17:57