版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/zhangleiyes123/article/details/82792010
项目中用到文件上传,现在把他整理下,一个接口可以实现单张/多张图片上传,方便日后参考!util包里的两端代码不用更改,
可以直接使用。
1.controller层
2.实现层
3.controller层所调用的util
package org.travel.util;
/**
* 上传照片的路径
* @author zl
* @date 2018/09/20
*
*/
public enum ImagePath {
/**
* 59的地址
*
*/
EXHIBITION_IMAGE("/var/www/html/vhosts/asyware/dev/travelShop/assets/EXHIBITION/"),
COMMERCIALS_IMAGE("/var/www/html/vhosts/asyware/dev/travelShop/assets/COMMERCIALS/"),
SHARE_IMAGE("/var/www/html/vhosts/asyware/dev/travelShop/assets/SHARE_IMAGE/"),
BASE_IMAGE("http://IP:端口/api/image/");
/**
* 192的地址
*
* EXHIBITION_IMAGE("/share/www/services/image/"),
COMMERCIALS_IMAGE("/share/www/services/image/"),
SHARE_IMAGE("/share/www/services/image/"),
BASE_IMAGE("http://IP:端口/api/image/");
*
*/
// EXHIBITION_IMAGE("D:\\images\\pic\\"),//多图
// CONTENT_IMAGE("D:\\images\\content\\"),//长图
// SHARE_IMAGE("D:\\images\\share\\");//分享图
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
private String value;
ImagePath(String value) {
this.value = value;
}
/**
* 获取配置文件参数名
* @return
*/
public String value() {
return value;
}
}
4.接下来的代码是最重要的
package org.travel.util;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import org.springframework.web.multipart.MultipartFile;
public class UploadFile {
/**
*
* 多张/单张都可以用这个
* 保存图片
*
* @param List<MultipartFile>
* 要批量上传的文件
* @param path
* 图片保存的路径
* @return "WRONG_FILE_EXTENSION"-错误的后缀, "FILE_EMPTY"-空文件 或者 保存后的绝对路径
* @throws IOException
*/
public static List<String> uploadFiles(List<MultipartFile> files, String path) throws IOException {
List<String> msgs = new ArrayList<>();
if (files.size() < 1) {
msgs.add("file_empty");
return msgs;
}
for (int i = 0; i < files.size(); ++i) {
MultipartFile file = files.get(i);
if (!file.isEmpty()) {
String filename = file.getOriginalFilename();
String type = filename.indexOf(".") != -1
? filename.substring(filename.lastIndexOf("."), filename.length())
: null;
if (type == null) {
msgs.add("file_empty");
return msgs;
}
if (!(".PNG".equals(type.toUpperCase()) || ".JPG".equals(type.toUpperCase()))) {
msgs.add("wrong_file_extension");
return msgs;
}
}
}
for (int i = 0; i < files.size(); ++i) {
MultipartFile file = files.get(i);
String filename = file.getOriginalFilename();
String type = filename.indexOf(".") != -1 ? filename.substring(filename.lastIndexOf("."), filename.length())
: null;
String filepath = path + UUID.randomUUID() + type;
File filesPath = new File(path);
if (!filesPath.exists()) {
filesPath.mkdir();
}
BufferedOutputStream out = null;
type = filepath.indexOf(".") != -1 ? filepath.substring(filepath.lastIndexOf(".") + 1, filepath.length())
: null;
try {
out = new BufferedOutputStream(new FileOutputStream(new File(filepath)));
out.write(file.getBytes());
msgs.add(filepath);
} catch (Exception e) {
// 没有上传成功
e.printStackTrace();
} finally {
out.flush();
out.close();
}
}
return msgs;
}
}