文件上传

文件上传

个人学习总结,代码中略有不足之处

public class FileServiceImpl implements FileService {
	//自定义目录
	private String localDir = "E:/images/";

	/**
	 * 
	 * 1.判断文件是否为图片 jpg|png|gif 2.防止恶意程序 高度/宽度 3.图片分文件保存 yyyy/MM/dd/ 4.防止重名 UUID
	 */
	@Override
	public EasyUIFile fileUpload(MultipartFile uploadFile) {

		EasyUIFile easyUIFile = new EasyUIFile();
		// 获取文件名字
		String fileName = uploadFile.getOriginalFilename();
		// 将字符串转化为小写
		fileName = fileName.toLowerCase();
		if (!fileName.matches("^.+\\.(jpg|png|gif)$")) {
			// 表示不满足规则
			return EasyUIFile.fail();

		}
		try {
			// 2.判断是否为恶意程序 转化为图片对象
			BufferedImage bufferedImage = ImageIO.read(uploadFile.getInputStream());
			int width = bufferedImage.getWidth();
			int height = bufferedImage.getHeight();
			if (width == 0 || height == 0) {
				return EasyUIFile.fail();
			}

			// 3.实现分文件存储 按照yyyy/MM/dd/
			String dateDir = new SimpleDateFormat("yyyy/MM/dd/").format(new Date());
			// 生成文件目录 D://image/yyyy/MM/dd
			String fileDirPath = localDir + dateDir;
			File dirFile = new File(fileDirPath);
			// 如果没有目录,则创建目录
			if (!dirFile.exists()) {
				dirFile.mkdirs();
			}

			// 4.生成文件名称防止重名
			int index = fileName.lastIndexOf(".");
			// 获取后缀类型(.jpg)
			String fileType = fileName.substring(index);
			String uuid = UUID.randomUUID().toString();
			// 拼接文件名称
			String realFileName = uuid + fileType;
			// 5.实现文件上传(文件上传核心代码)
			uploadFile.transferTo(new File(fileDirPath + realFileName));

			// 暂时使用网络地址代替真是url地址.
			easyUIFile.setWidth(width).setHeight(height).setUrl(
					"https://img14.360buyimg.com/n0/jfs/t1/81541/28/10612/304749/5d7f5f1dE03dfb7e1/c23ead253c54954a.jpg");
		} catch (Exception e) {
			e.printStackTrace();
			return EasyUIFile.fail();
		}
		return easyUIFile;
	}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值