项目场景:
在uniapp+vue3+APP中上传文件
问题描述
在uniapp中上传文件(FormData)发现uni.request不支持FormData
const formData = new FormData()
formData.append('avatarfile', data)
原因分析:
uni.request
请求发送格式Object|String|ArrayBuffer三种格式
解决方案:
uniapp也给了解决办法uni.uploadFile(OBJECT)
filePath是图片文件路径
name是FormData字段(avatarfile)
formData是file文件数据
这里就不使用FormData
const formData = new FormData()
formData.append('avatarfile', data)
这里借用chooseImage获取tempFilePaths
,tempFiles
uni.chooseImage({
count: 1, //默认9
sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], //从相册选择
success: function(res) {
const uploadTask = uni.uploadFile({
url: action,
filePath: res.tempFilePaths[0],
name: 'avatarfile', // 在FormData 中文件对应的属性名
formData: res.tempFiles[0], // 除文件外其他所有数据,传对象,会默认转换为 FormData
header: uploadHeader,
success: res => {
if (parseInt(res.data.code) === 200) {
toast.value.show({
title: '修改成功!',
type: 'success',
position: 'top'
});
userStore.GetInfo();
} else {
toast.value.show({
title: '修改失败!',
type: 'error',
position: 'top'
});
}
}
});
}
});