图片上传与下载
时间:2019-03-20
本文章向大家介绍图片上传与下载,主要包括图片上传与下载使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
private static final String IMAGE_TYPE_PROMPT = "文件格式仅支持jpg、png";
private static final String IMAGE_FILE_SIZE_PROMPT = "文件格式仅支持jpg、png";
public String saveUserImageToDir(MultipartFile multipartFile, String dir) throws AobpException, IOException {
if (!ImageUtil.checkIsImgByName(multipartFile.getOriginalFilename())) {
throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_TYPE_PROMPT);
}
if (!ImageUtil.fileSizeLegal(multipartFile.getSize())) {
throw new AobpException(ExceptionConstant.PARAMS_INVALID, IMAGE_FILE_SIZE_PROMPT);
}
return UploadUtil.upload(multipartFile,dir);
}
public class UploadUtil {
/**
* @return dest file name
*/
public static String uploadFileToDir(MultipartFile multipartFile, String saveDir) throws AobpException {
String fileName = UUID.randomUUID().toString().replaceAll("-", "");
// 文件新路径:文件名
uploadFileToDir(multipartFile, saveDir, fileName);
return fileName;
}
public static void uploadFileToDir(MultipartFile multipartFile, String saveDir, String fileName) throws AobpException {
uploadFile(multipartFile, saveDir + File.separator + fileName);
}
public static void uploadFile(MultipartFile multipartFile, String filePath) throws AobpException {
try (InputStream inputStream = multipartFile.getInputStream();
FileOutputStream outputStream = new FileOutputStream(filePath)) {
IOUtils.copy(inputStream, outputStream);
} catch (Exception e) {
log.error("copy file failed", e);
throw new AobpException(ExceptionConstant.INTERNAL_ERR, ExceptionConstant.UNKNOWN_ERROR);
}
}
//用户上传相关Yao
protected static Map<String, String> getFilePath(String path, String originName){
Date nowDate = new Date();
String fileFolder = path+File.separator+new SimpleDateFormat("yyyy").format(nowDate)+
File.separator+new SimpleDateFormat("MM").format(nowDate);
File fileNew = new File(fileFolder);
if(!fileNew.exists()){
fileNew.mkdirs();
}
String fileName = new SimpleDateFormat("yyyyMMddhhmmssSSSS").format(nowDate)+(int)((Math.random()*9+1)*100000)+"."+originName.substring(originName.lastIndexOf(".")+1);
String filePath = fileFolder+File.separator+fileName;
Map<String, String > resultMap = new HashMap();
resultMap.put("fileName",fileName);
resultMap.put("filePath",filePath);
return resultMap;
}
public static String upload(MultipartFile file, String saveDir) throws IOException, AobpException {
//如果文件内容不为空,则写入上传路径
if (!file.isEmpty()) {
//上传原文件名
String originName = file.getOriginalFilename();
Map<String, String> resultMap = getFilePath(saveDir, originName);
File filePath = new File(resultMap.get("filePath"));
try(FileOutputStream fileOutputStream = new FileOutputStream(filePath)){
FileCopyUtils.copy(file.getInputStream(), fileOutputStream);
}
return resultMap.get("fileName");
}
throw new AobpException(500, "图片上传失败");
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- rbind的坑?
- 全文检索工具Lucene入门教程
- 数据库技术:数据库连接池,Commons DbUtils,批处理,元数据
- elasticsearch-快速入门
- 数据库技术:JDBC,预处理对象,事务控制
- elasticsearch-DSL高级查询语法
- 数据库技术:XML
- 利用logstash将mysql多表数据增量同步到es
- 纯CSS实现自定义单选框和复选框
- 基于Linux安装Mysql5.7
- 纯CSS实现iOS风格打开关闭选择框
- 算法基础:递归
- ELK日志收集原理+es集群+elk搭建+本地目录文件读取,搭建分布式日志收集系统
- 什么是JavaScript 的闭包???
- es集群+elk搭建+kafka搭建分布式日志收集系统