java图片上转

import org.springframework.web.multipart.MultipartFile;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * 图片上传工具类
 * Created by charlin on 2017/9/10.
 */
public class UploadImageUtil {
    private String fileType;
    private Long maxSize;
    private Long width;
    private Long height;

    public UploadImageUtil() {  }

    public UploadImageUtil(String fileType, Long maxSize, Long width, Long height) {
        this.fileType = fileType;
        this.maxSize = maxSize;
        this.width = width;
        this.height = height;
    }

    /**
     * 检查上传图像大小
     *
     * @param upload
     * @param uploadFileName
     * @param uploadContentType
     * @return
     */
    public String checkUploadImage(File upload, String uploadFileName, String uploadContentType) {
        try {
            if (fileType != null) {
                String[] fileTypes = fileType.split(",");
                int count = 0;
                for (int i = 0; i < fileTypes.length; i++) {
                    if (uploadContentType.equals(fileTypes[i])) {
                        count++;
                        continue;
                    }
                }
                if (count == 0) {
                    return "您上传的文件类型不对!";
                }
            }
            BufferedImage bi = ImageIO.read(upload);
            int w = bi.getWidth();
            int h = bi.getHeight();
            if (w > width || h > height) {
                return "上传照片宽度和高度不符合要求";
            }
            if (upload.length() > maxSize) {
                return "上传照片过大";
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 图片上传
     * @param upload  上转的路径
     * @param uploadFileName  上传名字
     * @param path 存储的路径
     * @return
     * @throws Exception
     */
    public void uploadImage(File upload, String uploadFileName, String path) throws Exception {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = new FileInputStream(upload);
            File f = new File(path);
            if (!f.exists()) f.mkdirs();
            os = new FileOutputStream(path + "/" + uploadFileName);
            byte buffer[] = new byte[1024];
            int count = 0;
            int flag = 0;
            while ((count = is.read(buffer)) > 0) {
                os.write(buffer, 0, count);
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
            File f = new File(path + "/" + uploadFileName);
            if (f.exists()) {
                f.delete();
            }
        } finally {
            try {
                os.close();
                is.close();
            } catch (IOException ioe) {
            }
        }
    }

	/**
         * 
         * 多张/单张都可以用这个
	 * 保存图片   
	 * 
	 * @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;
	}

    /**
     * 清除文件
     * @param path
     */
    public void clear(String path) {
        File file = new File(path);
        if (file.isFile() && file.exists()) {
            file.delete();
        }
    }
    

    public String getFileType() {
        return fileType;
    }

    public void setFileType(String fileType) {
        this.fileType = fileType;
    }

    public Long getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(Long maxSize) {
        this.maxSize = maxSize;
    }

    public Long getWidth() {
        return width;
    }

    public void setWidth(Long width) {
        this.width = width;
    }

    public Long getHeight() {
        return height;
    }

    public void setHeight(Long height) {
        this.height = height;
    }
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值