看了很多博客,都只是写道如何上传图片,不知道如何上传图片和对象
错误实例
后台:
使用requesbody这样传递参数会报错找不到类型,
如果不使用requesbody会报错媒体类型不支持
前台
formdata里面写你要额外传递的参数或者json字符串
正确实例
后台,我们使用@RequestParam("diary")来获取前台json字符串,然后我们再把它转化为json对象,再转化为需要的对象,就可用获取到了
public BaseResponse<Object> uploadOssFile(@RequestParam("file") MultipartFile files,@RequestParam("diary")String diary1) throws Exception{
Diary diary;
diary= (Diary) JSONObject.toBean(JSONObject.fromObject(diary1),Diary.class);
ArrayList<String> urls;
log.info("bb"+files.getName());
log.info("bb"+files.getOriginalFilename());
MultipartFile [] files1=new MultipartFile[]{files};
urls = aliOssCloudUtil.uploadFile(files1);
Integer id=Math.abs((int) System.currentTimeMillis());
diary.setId(id);
diary.setCreateTime(new Date());
diaryService.save(diary);
for (String url : urls) {
DiaryImage diaryImage=new DiaryImage();
diaryImage.setDid(id);
diaryImage.setType(url.substring(url.lastIndexOf(".")+1));
diaryImage.setImage(url);
diaryImageService.save(diaryImage);
}
return ResultUtils.success("ok");
}
前台js
return new Promise((resolve,reject)=>{
uni.uploadFile({
url:Base.BASE_URL+"user/"+options.url+options.parm,
// files:,
filePath: options.paths,
name:'file',
//后台接收字段名
formData:{
"diary":JSON.stringify(options.data),
},
// header:{
// "Content-Type":"application/json"
// },
success: (res) => {
if (res.data.code == 200){
console.log('请求成功_______________',res)
uni.showToast({
icon:'none',
title:'提交成功',
success: (res) => {
setTimeout(() => {
}, 1500)
}
})
}
},
fail:(err)=>{
console.log('请求失败_______________',err)
}
})
})
调用的地方
submit(){
this.user=uni.getStorageSync('user');
this.diary.uid=this.user.uid;//这里是我自己需要的缓存
console.log(tempfilepaths);
this.$rjapi.uploadRequest({
url:"uploadimg",
parm:'',
paths:tempfilepaths[0],//这里是你选择的图片地址blob开头的那个
data:this.diary,
}).then((res)=>{
console.log(res);
})
}
最后,这个问题弄了好久好久,最后勉强解决,所以记录一下,有问题请大家指出,谢谢啦