uni.uploadFile等其他功能上传参数返回值不是json格式解决方案

        除uni.uploadFile,其他涉及选择完文件或图片上传,提取画板图片上传,都存在返回值不是json而是字符串的问题。

        这里用上传图片和视频的uni.chooseMedia获取文件后上传uploadFile举例。代码如下:

uni.chooseMedia({
success: (res) => {
	const tempFiles = res.tempFiles
	for(const i in tempFiles){
		uni.uploadFile({
			url: config.apiUrl + '/api/fileUpload',//写你自己的接口
			filePath: tempFiles[i].tempFilePath,
			name: 'file',
			success: (uploadFileRes) => {
				console.log(uploadFileRes)
			},
			fail: err => {
			    console.log(err)
			}
		});
	}
}
})

        接口正常,打印如下:

        可以看到返回值中的data是字符串,虽然data中的内容是json格式但network(网络中)查看返回值如下:

         network中查看接口发现返回值与直接打印的data格式不同,而且返回值开头

        还多了特殊符号

        尝试用js中格式转化来转化data。

uni.chooseMedia({
success: (res) => {
	const tempFiles = res.tempFiles
	for(const i in tempFiles){
		uni.uploadFile({
			url: config.apiUrl + '/api/fileUpload',//写你自己的接口
			filePath: tempFiles[i].tempFilePath,
			name: 'file',
			success: (uploadFileRes) => {
				console.log(JSON.parse(uploadFileRes))//转化为json格式
			},
			fail: err => {
			    console.log(err)
			}
		});
	}
}
})

        发现转化成功,就可以直接使用了。但如果出现了刚才的特殊符号,也就是 ï»¿,那就会报错如下:

        这是提示被转化为json的参数并不是json格式,但参数确实是json格式 ,所以要去掉这个   ï»¿  特殊符号。这个符号是php接口携带的bom头(其他框架写接口还没见过)。

        使用replace去掉这个bom头即可将参数转化为json,代码如下(.replace('\uFEFF', '')):

uni.chooseMedia({
success: (res) => {
	const tempFiles = res.tempFiles
	for(const i in tempFiles){
		uni.uploadFile({
			url: config.apiUrl + '/api/fileUpload',//写你自己的接口
			filePath: tempFiles[i].tempFilePath,
			name: 'file',
			success: (uploadFileRes) => {
				let imgData =JSON.parse(uploadFileRes.data.replace('\uFEFF', ''))
				console.log(imgData)
			},
			fail: err => {
			    console.log(err)
			}
		});
	}
}
})

         打印如下:

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值