上传图片文件示例(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,电子邮箱免费注册流程