function dataURLtoFile(dataUrl, fileName) {
var arr = dataUrl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], fileName, { type: mime });
}
uni.uploadFile({
url: 'xxx',
file: dataURLtoFile(dataurl, 'sign.png'),
fileType: 'image',
name: 'file',
formData: {
proj: 'xxx',
hashName: 1,
},
}) - 发布:2025-11-25 19:13
- 更新:2025-11-25 19:19
- 阅读:15
产品分类: uniapp/H5
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 12.7.1
HBuilderX类型: 正式
HBuilderX版本号: 4.85
浏览器平台: Chrome
浏览器版本: 142.0.7444.162
项目创建方式: HBuilderX
示例代码:
操作步骤:
- 将dataurl转换为文件
- 调用uploadFile上传文件
- 将dataurl转换为文件
- 调用uploadFile上传文件
预期结果:
进入success回调,返回接口响应的数据
进入success回调,返回接口响应的数据
实际结果:
进入fail回调,返回 {errMsg: 'uploadFile:fail file error'}
进入fail回调,返回 {errMsg: 'uploadFile:fail file error'}
bug描述:
h5端调用uploadFile,通过控制台查看请求和响应内容都是没有问题的,但是uploadFile返回{errMsg: 'uploadFile:fail file error'}
文件是通过dataURL转换的File类型,回退到hbuilderX 4.75版本没有问题
1 个回复
DCloud_UNI_JBB
filePath 和 files 不能同时为空,必须设置一个,files 的优先级高于 filePath