6月初的时候,公司开发微信小程序,微信端是其他同事负责,我只负责服务器端;
当时因为前同事开发了一个月没有任何效果走人了,所以时间比较紧,由我独自开发,且要保证工期,不过自认为压力不大;
可是当开始写上传图片功能时,遇到了问题;
先说一般web项目
@Deprecated
@RequestMapping("/upload1")
public void upload1(HttpServletResponse resp, MultipartFile[] files){
//平时我们都是这样获取文件的;可是小程序上传的图片,这样完全收不到;
}
//然后各种查询,各种翻资料,找不到解决方案,最后还是在官方文档里翻到了解决方案,(已经忘记当时在哪翻到的了)
@PostMapping("upload")
public String upload(HttpServletRequest request,@RequestParam(value = "file") MultipartFile file){
// 就是这么简单...这样就可以接受到 小程序上传的图片了;
String path = photoSave(file); // 这个方法返回当前图片的储存路径;
}
下面将我的储存代码也写上来,如有不足请指出;
/**
* 将一张图片储存
* @param file MultipartFile 类型的文件
* @return 返回文件的储存路径
*/
public static String photoSave(MultipartFile file) {
String photoName = null;
String fileName = file.getOriginalFilename();
String typeName = "";
// 下面判断这个图片的名字长度,以及是否有 后缀(.jpg这种);
if (fileName != null && fileName.length() > 4) {
int last = fileName.lastIndexOf(".");
String str = "";
if (last != -1) {
str = fileName.substring(last);
}
// 这里自己生成图片名,然后再加上 上面截取到的 图片后缀 str
photoName = "xxxxxxxx" + str;
try {
// 将图片储存到 硬盘 "D:/photo/" 位置
file.transferTo(new File("D:/photo/" + photoName));
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
return "D:/photo/" + photoName;
}
返回的路径,可以自己修改为 通过服务器的访问路径,比如储存的位置修改到 webapps 下的photo,
返回的路径改为: localhost:8080/photo/xxxxxxxx.jpg;
如有不足请指出,谢谢