使用Uni-app提供的意见反馈页面,多图上传时,发现怎么也上传不上去。
1张图片可以,2张以上图片就接收不到参数了,到现在也不知道是咋回事。
解决案:
uni-app代码
chooseImg() { //选择图片
uni.chooseImage({
sourceType: ["camera", "album"],
sizeType: "compressed",
count: 8 - this.imageList.length,
success: (res) => {
this.imageList = this.imageList.concat(res.tempFilePaths);
}
})
},
send() { //发送反馈
console.log(this.sendDate);
let imgs = this.imageList.map((value, index) => {
return {
name: "image" + index,
uri: value
}
})
console.log(JSON.stringify(imgs));
uni.uploadFile({
url: `服务端地址`,
files: imgs,
formData: this.sendDate,
header: {
"Content-Type": "multipart/form-data"
},
success: (res) => {
if (res.statusCode === 200) {
uni.showToast({
title: "反馈成功!"
});
this.imageList = [];
this.sendDate = {
score: 0,
content: "",
contact: ""
}
}
},
fail: (res) => {
uni.showToast({
title: "系统异常,请与管理员联络",
position:'bottom'
});
console.log(res)
}
});
}
服务端我是用的是SSM框架
至于formData里的值,我是通过request.getParameter();这种方式获取的。
其实想在参数后面直接加一个实体类接受的,但是加上之后在请求接口就进不来了。不知道为啥
大佬们有知道的,还请告诉一下。
@RequestMapping(value = "/addFeedBack")
@ResponseBody
public String addFeedBack(HttpServletRequest request){
// 获取formData信息
// FeedBackModel feedBackModel = new FeedBackModel();
// feedBackModel.setAppid(request.getParameter("appid"));
// feedBackModel.setDeviceImei(request.getParameter("imei"));
// feedBackModel.setOsName(request.getParameter("p"));
// feedBackModel.setDeviceModel(request.getParameter("md"));
// feedBackModel.setRuntimeVersion(request.getParameter("app_version"));
// feedBackModel.setOsVersion(request.getParameter("os"));
// feedBackModel.setNetStatus(request.getParameter("net"));
// feedBackModel.setScore(request.getParameter("score"));
// feedBackModel.setContent(request.getParameter("content"));
// feedBackModel.setContact(request.getParameter("contact"));
CommonsMultipartResolver commonsMultipartResolver = new
CommonsMultipartResolver(request.getSession().getServletContext());
commonsMultipartResolver.setDefaultEncoding("utf-8");
if (commonsMultipartResolver.isMultipart(request)){
MultipartHttpServletRequest mulReq = (MultipartHttpServletRequest) request;
Map<String, MultipartFile> map = mulReq.getFileMap();
// key为前端的name属性,value为上传的对象(MultipartFile)
for (Map.Entry<String, MultipartFile> entry : map.entrySet()) {
// 自己的保存文件逻辑
System.err.println(""+entry.getKey()+ entry.getValue());
//saveOrUpdateImageFile(feedback.getId(), entry.getKey(),
entry.getValue());
}
}
return JSONObject.toJSONString("");
}
以上就是所有代码,亲测有效。
我上传了4张图片,这是控制台打印出来的结果
大家如果有好的方法或者改善意见,欢迎留言。谢谢!