上传图片文件示例(java)
1. 引入maven依赖
<!--上传文件-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<!--io流-->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
private String filePath="E://itripImages/img/comment/"; //文件路径
private String prefix_img="img.itrip.project.bdqn.cn/comment/"; //评论图片文件名前缀
public List<String> upLoadCommentImage(HttpServletRequest request) throws IOException, FileSizeOverException, BizFileUploadFailedException, BizFileTypeNotMatchException, BizFileCountOverException {
System.out.println("图片上传业务处理");
//图片路径集合
List<String> imageUrls = new ArrayList<String>();
//创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
//判断 request 是否有文件上传,即多部分请求
if(multipartResolver.isMultipart(request)){
//转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
//文件数量
int fileCount = multiRequest.getFileMap().size();
/*上传的文件数不正确,必须是大于1小于等于4*/
if(fileCount > 4 )
throw new BizFileCountOverException();
//取得request中的所有文件名
Iterator<String> fileNames = multiRequest.getFileNames();
/*循环遍历所有文件*/
while(fileNames.hasNext()){
//取得上传文件
MultipartFile file = multiRequest.getFile(fileNames.next());
if(file != null) {
//判断文件大小,大小不超过5M
if (file.getSize() >= 5 * 1024 * 1024)
throw new FileSizeOverException();
/*判断文件类型:格式为:jpg、jpeg、png*/
//取得当前上传文件的文件名称
String myFileName = file.getOriginalFilename();
//获取文件类型
String fileType = myFileName.substring(myFileName.indexOf(".") + 1);
/*文件类型不匹配*/
if(!fileType.equalsIgnoreCase("jpg")
&& !fileType.equalsIgnoreCase("png")
&& !fileType.equalsIgnoreCase("jpeg"))
throw new BizFileTypeNotMatchException();
/*重命名上传后的文件名*/
String token = multiRequest.getHeader("token");
String json = redisUtil.getString(token);
//获取登录用户信息
ItripUser user = JSONObject.parseObject(json, ItripUser.class);
//文件名后缀
String suffixString = myFileName.substring(myFileName.indexOf("."));
//新的文件名: 命名规则:当前用户id-当前时间毫秒数-随机数
String fileName =user.getId()+ "-" +System.currentTimeMillis() + "-" + ((int)(Math.random()*10000000))+suffixString ;
//创建file对象
// File imageFile=new File(filePath + fileName);
File imageFile=new File(filePath + fileName+"_200x200.jpg");
//将文件写入目标路径
file.transferTo(imageFile);
//添加到图片路径集合
imageUrls.add(prefix_img + fileName);
}
}
}
return imageUrls;
}
下一篇:
Email,电子邮箱免费注册流程
