项目场景:

在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获取tempFilePathstempFiles

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'
						});
					}
				}
			});
		}
	});
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐