java代码实现多张图片/单张图片文件上传

版权声明:本文为博主原创文章,未经博主允许不得转载。https://blog.csdn.net/zhangleiyes123/article/details/82792010

项目中用到文件上传,现在把他整理下,一个接口可以实现单张/多张图片上传,方便日后参考!util包里的两端代码不用更改,

可以直接使用。

1.controller层

java代码实现多张图片/单张图片文件上传_第1张图片

2.实现层

java代码实现多张图片/单张图片文件上传_第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
	 *            要批量上传的文件
	 * @param path
	 *            图片保存的路径
	 * @return "WRONG_FILE_EXTENSION"-错误的后缀, "FILE_EMPTY"-空文件 或者 保存后的绝对路径
	 * @throws IOException
	 */
	public static List uploadFiles(List files, String path) throws IOException {
		List 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;
	}

	

}

 

你可能感兴趣的:(文件上传)