public class UploadImgUtils {

    private static String savePath = "";

    /**
* 上传照片工具类
*
* @param file 文件
* @param workNo 工单号
* @param property 配置的环境(dev,prod,test)
* @return
* @throws OperationException
*/
public static String uploadImg(MultipartFile file, String workNo, String property) throws OperationException {
if (file == null) {
throw new OperationException(ReturnCodeEnum.OPERATION_IMG_IS_NULL);
}
if (file.getSize() > 1024 * 1024 * 1) {
throw new OperationException(ReturnCodeEnum.OPERATION_IMG_SIZE_LARGE);
}
//获取文件后缀
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
if (!"jpg,jpeg,gif,png".toUpperCase().contains(suffix.toUpperCase())) {
throw new OperationException(ReturnCodeEnum.OPERATION_IMG_FORM_ERROR);
}
//对savePath进行过赋值
getProperties(property);
File savePathFile = new File(savePath);
if (!savePathFile.exists()) {
//若不存在该目录,则创建目录
savePathFile.mkdir();
}
//用工单号作为唯一的标识符
String filename = workNo + "." + suffix;
try {
//将文件保存指定目录
file.transferTo(new File(savePath + filename));
} catch (Exception e) {
throw new OperationException(e, ReturnCodeEnum.OPERATION_SAVE_IMG_ERROR);
}
//返回文件名称
return savePath + filename;
} /**
* 读取配置文件中的信息.
*
* @return
*/
private static void getProperties(String name) {
YamlPropertiesFactoryBean factoryBean = new YamlPropertiesFactoryBean();
factoryBean.setResources(new ClassPathResource("application-" + name + ".yml"));
factoryBean.afterPropertiesSet();
Properties object = factoryBean.getObject();
savePath = (String) object.get("operation.savePath");
}
}

上面的上传文件,下面的方法是用来获取环境变量的配置文件

最新文章

  1. 探索UDP套接字编程
  2. H5移动端页面设计心得分享
  3. High购电商系统开发注意点
  4. js整理1
  5. Swift3.0语言教程分割字符串与截取字符串
  6. 项目管理软件之易度1.5,禅道2.0,redmine1.2(附redmine1.2的安装)
  7. iOS - CoreMotion
  8. Q4: Two Sum
  9. POJ 3666 Making the Grade (DP)
  10. make clean与make distclean的区别
  11. angularjs指令中的compile与link函数详解
  12. 单链表数据结构 - java简单实现
  13. influxDB和grafana
  14. css3动画功能介绍
  15. OWASP移动安全漏洞Top 10
  16. BASIC-24_蓝桥杯_龟兔赛跑预测
  17. MQ环境的搭建
  18. Linux下QTCreator代码自动补全(是真的自动补全,不是手动触发)
  19. 问题004:如何在windows中打开命令行,有几种方法?
  20. Hibernate中表与表之间的关联多对多,级联保存,级联删除

热门文章

  1. 监控redis命令 - monitor
  2. IOR and mdtest - measure parallel file system I/O performance at both the POSIX and MPI-IO level.
  3. 如何在mysql数据库生成百万条数据来测试页面加载速度
  4. 第05组 Beta冲刺(2/4)
  5. WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)
  6. Nginx之负载均衡 :两台服务器均衡(填坑)
  7. python接口自动化10-excel设计模式实战
  8. 基于 HTML5 WebGL 构建智能城市 3D 场景
  9. asp.net 关于gridview使用的一些小技巧
  10. 投色子--html demo