java上传文件工具类

Java文件上传与下载

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

public class UploadUtil {
 /**
  * 上传附件
  */
 public static String uploadFile(CommonsMultipartFile cFile,
   String newAddress) {
  if (cFile == null) {
   return "";
  }
  String baseDir = ReadProUtil.getValue(newAddress);
  // baseDir.substring(baseDir.lastIndexOf("\\")+1);
  String pathName = "";
  String tid_str = "";
  String tid = String.valueOf(System.currentTimeMillis());
  Date dt = new Date();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
  tid_str = sdf.format(dt);
  String base = baseDir + "\\" + tid_str + "\\" + tid;
  File file = new File(base);
  if (!file.exists()) {
   file.mkdirs();
  }
  if (cFile != null) {
   String upload = cFile.getFileItem().getName();// 取的上传文件的完整路径
   if ("".equals(upload) || upload == null) {
    return "";
   }
   String filepath = base + "\\"
     + upload.substring(upload.lastIndexOf('\\') + 1);
   pathName = "\\" + tid_str + "\\" + tid + "\\"
     + upload.substring(upload.lastIndexOf('\\') + 1);
   File uploadedFile = new File(filepath);
   try {
    FileCopyUtils.copy(cFile.getBytes(), uploadedFile);
    System.out.println(filepath);
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

  return pathName;
 }

 /**
  * 资料下载
  *
  * @param name
  * @param resp
  * @param base
  * @throws Exception
  */
 public static void readdocument(String fjdz, HttpServletResponse resp,
   String base) throws Exception {
  String suffix = fjdz.substring(fjdz.lastIndexOf('.') + 1); // 取得上传文件后缀名
  // 设置文件输出流
  File file = new File(base + fjdz);
  if (file.exists()) {
   String filename = URLEncoder.encode(
     fjdz.substring(fjdz.lastIndexOf('\\') + 1), "utf-8");
   resp.reset();
   // resp.setHeader("Cache-Control", "no-cache");//不设置缓存
   // resp.setHeader("Expires", "0");//应该认为什么时候过期不在缓存它
   // resp.setContentType("application/smil");// 设置响应头部的文件信息
   resp.setContentType(getContentType(suffix));
   resp.addHeader("Content-Disposition", "attachment; filename=\""
     + filename + "\"");// 下载文件保存的名称
   int fileLength = (int) file.length();
   resp.setHeader("Content-Length", String.valueOf(fileLength));
   // response.setContentLength(fileLength);//作用同res.setHeader("Content-Length",
   // String.valueOf(fileLength));
   /* 如果文件长度大于0 */
   if (fileLength != 0) {
    /* 创建输入流 */
    InputStream in = new FileInputStream(file);
    byte[] buf = new byte[4096];
    /* 创建输出流 */
    ServletOutputStream out = resp.getOutputStream();
    int readLength;
    while (((readLength = in.read(buf)) != -1)) {
     out.write(buf, 0, readLength);
    }
    in.close();
    out.flush();
    out.close();
   }
  }
 }

 public static String getContentType(String key) {
  HashMap<String, String> mimeTypes = new HashMap<String, String>();
  // Image
  mimeTypes.put("gif", "image/gif");
  mimeTypes.put("jpg", "image/jpeg");
  mimeTypes.put("jpeg", "image/jpeg");
  mimeTypes.put("jpe", "image/jpeg");
  mimeTypes.put("tif", "image/tiff");
  mimeTypes.put("png", "image/png");
  mimeTypes.put("ief", "image/ief");
  mimeTypes.put("bmp", "image/bmp");
  mimeTypes.put("ras", "image/x-cmu-raster");
  mimeTypes.put("pnm", "image/x-portable-anymap");
  mimeTypes.put("pbm", "image/x-portable-bitmap");
  mimeTypes.put("pgm", "image/x-portable-graymap");
  mimeTypes.put("ppm", "image/x-portable-pixmap");
  mimeTypes.put("rgb", "image/x-rgb");
  mimeTypes.put("xbm", "image/x-xbitmap");
  mimeTypes.put("xpm", "image/x-xpixmap");
  mimeTypes.put("xwd", "image/x-xwindowdump");
  // Publish Docuement Format
  mimeTypes.put("pdf", "application/pdf");
  mimeTypes.put("doc", "application/msword");
  mimeTypes.put("xls", "application/vnd.ms-excel");
  mimeTypes.put("ppt", "application/vnd.ms-powerpoint");
  mimeTypes.put("txt", "text/plain");
  mimeTypes.put("djvu", "application/djvu");
  return mimeTypes.get(key.toLowerCase());
 }

 

其中cFile是通过控制器中MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  CommonsMultipartFile cFile = (CommonsMultipartFile) multipartRequest
    .getFile("filename");传过去的参数。newAddress是资源文件中的名字,用户获取目录。返回附件地址用于存到数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值