java实现文件上传下载和图片压缩代码示例

12-31 生活常识 投稿:恰似旧人归
java实现文件上传下载和图片压缩代码示例

本文给大家介绍的是项目中经常需要用到的一个常用的功能,使用java实现文件的上传下载和图片的压缩功能,这里推荐给大家,有需要的小伙伴参考下。

分享一个在项目中用的到文件上传下载和对图片的压缩,直接从项目中扒出来的:)


复制代码 代码如下:
package com.eabax.plugin.yundada.utils;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import net.coobird.thumbnailator.Thumbnails;
import org.apachemons.fileupload.FileItem;
import org.apachemons.fileupload.disk.DiskFileItemFactory;
import org.apachemons.fileupload.servlet.ServletFileUpload;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.eabax.plugin.yundada.GaContext;
public class FileUploadDownloadUtil {
  private static final Logger log = LoggerFactory.getLogger(FileUploadDownloadUtil.class);
 
  public static String upload(HttpServletRequest request, String type) throws Exception {
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  String saveFileName = null;
  if (isMultipart) {
  String savePath = request.getSession().getServletContext()
  .getRealPath("/")
  + "/upload/";
  String tempPath = request.getSession().getServletContext()
  .getRealPath("/")
  + "/upload/temp/";
  File saveFile = new File(savePath);
  File tempFile = new File(tempPath);
  if (!saveFile.isDirectory())
  saveFile.mkdirs();
  if (!tempFile.isDirectory())
  tempFile.mkdirs();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(1024 * 4);
  factory.setRepository(tempFile);
  ServletFileUpload uploader = new ServletFileUpload(factory);
  uploader.setSizeMax(20 * 1024 * 1024);
  List FileItem fileItems = uploader.parseRequest(request);
  for (FileItem item : fileItems) {
  if (item.isFormField()) {
  // funName=item.getString();
  } else {
  // String fileName=item.getName();
  // String
  // fix=fileName.substring(fileName.lastIndexOf(".")+1);
  String fix = type;
  Date nowDate = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat(
  "yyyyMMddhhmmss");
  String fileName = sdf.format(nowDate);
  fileName += System.currentTimeMillis();
  fileName += "." + fix;
  saveFileName = "/upload/" + fileName;
  File file = new File(savePath + fileName);
  item.write(file);
  }
  }
  }
  return saveFileName;
  }
 
  public static String uploadHeadShow(HttpServletRequest request,GaContext context, String type) throws Exception {
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  String saveFileName = null;
  String imagePath = "/upload/headshow/";
  String x = request.getParameter("length");
  String y = request.getParameter("wide");
  if (isMultipart) {
  String headShowServicePath = request.getSession().getServletContext()
  .getRealPath("/")
  + imagePath;
  Date nowDate = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat(
  "yyyyMMddhhmmss");
  String fileName = context.getUsername()+sdf.format(nowDate);
  File headShowFile = new File(headShowServicePath);
  if (!headShowFile.isDirectory())
  headShowFile.mkdirs();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(1024 * 4);
  factory.setRepository(headShowFile);
  ServletFileUpload uploader = new ServletFileUpload(factory);
  uploader.setSizeMax(20 * 1024 * 1024);
  List FileItem fileItems = uploader.parseRequest(request);
  for (FileItem item : fileItems) {
  if (item.isFormField()) {
  // funName=item.getString();
  } else {
  String fix = type;
  fileName += "." + fix;
  saveFileName = imagePath + fileName;
  File file = new File(headShowServicePath + fileName);
  item.write(file);
  }
  }
  //压缩图片
  if(x!=null !"".equals(x) y!=null !"".equals(y)) {
  saveFileName = thumbnailatorImage(imagePath, fileName, type, Integer.parseInt(x), Integer.parseInt(y));
  }
  }
  return saveFileName;
  }
 
  public static JSonObject uploadArticleImage(HttpServletRequest request,GaContext context, String type) throws Exception {
  boolean isMultipart = ServletFileUpload.isMultipartContent(request);
  JSonObject saveFileName = new JSonObject();
  String imagePath = "";
  String x = request.getParameter("length");
  String y = request.getParameter("wide");
  if("4".equals(type)) {
  //分享上传图片路径
  imagePath = "/upload/articleimage/";
  }else if("5".equals(type)) {
  //链接上传图片路径
  imagePath = "/upload/linkimage/";
  } else {
  //头像上传图片路径
  imagePath = "/upload/headshow/";
  }
  if (isMultipart) {
  String headShowServicePath = request.getSession().getServletContext()
  .getRealPath("/")
  + imagePath;
  File headShowFile = new File(headShowServicePath);
  if (!headShowFile.isDirectory())
  headShowFile.mkdirs();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(1024 * 4);
  factory.setRepository(headShowFile);
  ServletFileUpload uploader = new ServletFileUpload(factory);
  uploader.setSizeMax(20 * 1024 * 1024);
  List FileItem fileItems = uploader.parseRequest(request);
  for (FileItem item : fileItems) {
  UUID uuid = UUID.randomUUID();
  String fileName = uuid.toString();
  if (item.isFormField()) {
  // funName=item.getString();
  } else {
  String fix = type;
  fileName += "." + fix;
  saveFileName.put( uuid.toString(),imagePath + fileName);
  File file = new File(headShowServicePath + fileName);
  item.write(file);
  }
  //压缩图片
  if(x!=null !"".equals(x) y!=null !"".equals(y)) {
  String thumbnailatorName = thumbnailatorImage(imagePath, fileName, type, Integer.parseInt(x), Integer.parseInt(y));
  saveFileName.put("thumbnailatorImage", thumbnailatorName);
  }
  }
  }
  return saveFileName;
  }
 
  public static String thumbnailatorImage(String oldSavePath,String oldFileName,String fix,int x,int y) throws IOException {
  //Thumbnail读取并压缩图片
  BufferedImage waterMarkBufferedImage = Thumbnails.of(oldSavePath+oldFileName) 
  //Thumbnail的方法,压缩图片
  .size(x, y)
  //读取成BufferedImage对象 
  .asBufferedImage(); 
  //把内存中的图片写入到指定的文件中 
  String savePath = oldSavePath+x+"-"+y+"/";
  File saveFile = new File(savePath);
  if (!saveFile.isDirectory())
  saveFile.mkdirs();
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(1024 * 4);
  factory.setRepository(saveFile);
  ServletFileUpload uploader = new ServletFileUpload(factory);
  uploader.setSizeMax(20 * 1024 * 1024);
  UUID uuid = UUID.randomUUID();
  String fileName = uuid.toString();
  fileName += "." + fix;
  String saveFileName = savePath+fileName;
  File fileOutPut = new File(saveFileName); 
  ImageIO.write(waterMarkBufferedImage, fix, fileOutPut);
  return saveFileName;
  }
 
  public static String downloadThumbnailatorImage(String servicePath,String uri,int x,int y) throws IOException {
  //校验图片是否存在
  String uriSubPath = uri.substring(0, uri.lastIndexOf("/")+1);//文件名以前,服务器以后
  String fileName = uri.substring(uri.lastIndexOf("/")+1,uri.length());//文件名
  String getThumbnailatorPath = servicePath + uriSubPath+x+"-"+y+"/";
  String saveFileName = getThumbnailatorPath+fileName;
  File downFilePath = new File(getThumbnailatorPath);//压缩以后的文件夹
  File downFile = new File(saveFileName);//压缩以后的文件
  if (downFilePath.isDirectory() downFile.exists()) {
  return saveFileName;
  } else {
  //Thumbnail读取并压缩图片
  log.error(servicePath+uri);
  BufferedImage waterMarkBufferedImage = Thumbnails.of(servicePath+uri) 
  //Thumbnail的方法,压缩图片
  .size(x, y)
  //读取成BufferedImage对象 
  .asBufferedImage();
  if (!downFilePath.isDirectory()) {
  downFilePath.mkdirs();
  }
  DiskFileItemFactory factory = new DiskFileItemFactory();
  factory.setSizeThreshold(1024 * 4);
  factory.setRepository(downFilePath);
  ServletFileUpload uploader = new ServletFileUpload(factory);
  uploader.setSizeMax(20 * 1024 * 1024);
  File fileOutPut = new File(saveFileName); 
  ImageIO.write(waterMarkBufferedImage, "jpg", fileOutPut);
  }
  return saveFileName;
  }

标签: # 图片 # 文件
声明:伯乐人生活网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系ttnweb@126.com