公司最近的业务,要实现一个多图上传的功能(公司连工具类都没得!),网上自己看了挺多的。然后手写了一个。想法就是用MultipartFile[]来接收一个图片地址的数组。前台需要给我们传一个这样的string数组。然后我们给他存到本机或者到时候项目部署,写linux中的地址就可以。然后我们List数组转字符串。然后返回一个图片路径的字符串。就比如这样 ”C:/fileUpload/1.jpg,C:/fileUpload/2.png“.
然后返回给前台,新增时的图片路径赋值就赋值返回的字符串就行啦。然后进后台存入数据库。查询的时候也是把这一串字符串返回前台,前台拿到就可以通过分隔逗号来多图展示!直接上代码吧啰嗦太多了。。。
@ApiOperation("图片上传")
@RequestMapping(value="/saveFile",produces="application/json;charset=UTF-8")
@ResponseBody
public String filesUpload(@RequestParam(value = "myfiles" ) MultipartFile[] files,
HttpServletRequest request) {
List<String> list = new ArrayList<>();
if (files != null && files.length > 0) {
for (int i = 0; i < files.length; i++) {
MultipartFile file = files[i];
// 保存文件
list = saveFile(request, file, list);
}
}
//测试
for (int i = 0; i < list.size(); i++) {
System.out.println("集合里面的数据" + list.get(i));
}
// 数组转String字符串
String newStr = StringUtils.join(list, ",");
System.out.println(newStr);
return newStr;
}
private List<String> saveFile(HttpServletRequest request,
MultipartFile file, List<String> list) {
// 判断文件是否为空
if (!file.isEmpty()) {
try {
// 保存的文件路径(如果用的是Tomcat服务器,文件会上传到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\upload\\文件夹中
// )
String filePath = "C:/fileUpload/picture" + (new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + file.getOriginalFilename());
list.add(filePath);
File saveDir = new File(filePath);
if (!saveDir.getParentFile().exists())
saveDir.getParentFile().mkdirs();
// 转存文件
file.transferTo(saveDir);
return list;
} catch (Exception e) {
e.printStackTrace();
}
}
return list;
}
postman测试:
记得改成multipart/form-data表单提交:
上传两张图片试试,记得选file
最终效果:
希望能帮到各位。