uni-app 报严重的错误.uni.uploadFile() 上传数据参数formData 传输的数据不完整
uni-app 报严重的错误.uni.uploadFile() 上传数据参数formData 传输的数据不完整
产品分类
uniapp/App
开发环境、版本号、项目创建方式
项⽬目信息 | 详情 |
---|---|
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.98 |
手机系统 | iOS |
手机系统版本号 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | 14pro |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码
uni.uploadFile({
url: this.$api.website() + _Data.team_apply_add_url,
files: images,
filePath: '',
name: '',
formData: this.info,
success: (res) => {
let result = JSON.parse(res.data);
}
});
// 下面是info的内容
info: {
project_id: '',
project_title: '',
subpackage_id: '',
subpackage_title: '',
level_id: '',
level_title: '',
title: '',
title2: '',
idcard: '',
idcard2: ''
}
操作步骤
一直复现
预期结果
idcard2=’’, 也要传输到后台api中
实际结果
idcard2=’’, 没有传输到后台api中
bug描述
严重的错误.
uni.uploadFile()
上传数据参数 formData
中传递的 JSON 对象中空值的字段,比如 idcard2=''
,这个 idcard2
字段名称和数据没有上传到我 api 后台
3 回复
四五年了一直存在这个问题,今天又遇到了。。。官方能不能给个回复
我的formData,微信小程序上一直发送不出去数据。…
在处理 uni-app
中的 uni.uploadFile()
方法时,如果遇到 formData
传输数据不完整的问题,这通常是由于数据格式或编码问题导致的。以下是一个示例代码,展示了如何正确使用 uni.uploadFile()
方法来上传包含 formData
的文件数据,并确保数据完整性。
首先,确保你的 uni-app
项目已经正确配置了文件上传的服务器地址和相关权限。
示例代码
// 假设你要上传一个文件和一些附加的表单数据
const filePath = 'path/to/your/file.jpg'; // 文件路径
const serverUrl = 'https://yourserver.com/upload'; // 服务器接收文件的URL
// 要上传的表单数据
const formData = {
user: 'testUser',
token: 'yourAuthToken',
// 可以添加更多字段
};
// 将表单数据转换为URL编码的字符串
const formDataStr = Object.keys(formData)
.map(key => encodeURIComponent(key) + '=' + encodeURIComponent(formData[key]))
.join('&');
// 调用uni.uploadFile方法
uni.uploadFile({
url: serverUrl,
filePath: filePath,
name: 'file', // 文件对应的key,后端通过这个key获取文件
formData: formDataStr, // 附加数据
success: (uploadFileRes) => {
console.log('上传成功:', uploadFileRes);
// 处理上传成功后的逻辑
},
fail: (error) => {
console.error('上传失败:', error);
// 处理上传失败后的逻辑
},
complete: () => {
// 上传完成的回调,无论成功或失败都会执行
}
});
关键点说明
- filePath:这是你要上传的文件的本地路径。
- serverUrl:这是文件上传服务器的URL。
- formData:这是你要附加到文件上传请求中的表单数据。
- formDataStr:由于
uni.uploadFile()
方法的formData
参数只接受URL编码的字符串,因此我们需要将JavaScript对象转换为这种格式。 - name:这是文件在上传请求中的字段名,后端通过这个字段名来接收文件。
注意事项
- 确保文件路径正确,并且文件存在。
- 确保服务器URL正确,并且服务器能够处理文件上传请求。
- 检查后端是否对
formData
的字段名和值有特定的要求,比如字段名是否区分大小写,值是否需要特定的编码等。
通过上述方法,你应该能够解决 uni.uploadFile()
方法中 formData
传输数据不完整的问题。如果问题依旧存在,建议检查后端日志,看是否有关于接收到的数据的详细错误信息。