`
yx717yx
  • 浏览: 11567 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

基于commons-fileupload组件的上传下载与删除

阅读更多

  
  作者:蜗牛   527812862 1.  首先把javacommons-fileupload-1.2.1.jar和commons-io-1.4.jar两个包通过MyEclipse导入到项目工程里。
  2.  建立FileUpload.java的Servlet类。
  package com.web.server.servlet;
  import java.io.File;
  import java.io.IOException;
  import java.io.PrintWriter;
  import java.util.Iterator;
  import java.util.List;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  import org.apache.commons.fileupload.FileItem;
  import org.apache.commons.fileupload.FileUploadException;
  import org.apache.commons.fileupload.FileUploadBase.SizeL imitExceededException;
  import org.apache.commons.fileupload.disk.DiskFileItemFac tory;
  import org.apache.commons.fileupload.servlet.ServletFileU pload;
  public class FileUpload extends HttpServlet {
  public FileUpload() {
  super();
  }
  public void destroy() {
  super.destroy(); // Just puts "destroy" string in log
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  doPost(request, response);
  }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  final String appRealPath = this.getServletContext().getRealPath("/"); // 获取webapp的物理路径
  final long MAX_SIZE = 3 * 1024 * 1024; // 设置上传文件最大为 3M
  final String[] allowedExt = new String[] { "jpg", "jpeg", "gif", "txt",
  "doc", "docx","pdf", "mp3", "wma", "jar" }; // 允许上传的文件格式的列表
  response.setContentType("text/html");
  response.setCharacterEncoding("UTF-8"); // 设置字符编码为UTF-8, 这样支持汉字显示
  // 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
  DiskFileItemFactory dfif = new DiskFileItemFactory();
  dfif.setSizeThreshold(4096); // 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘
  dfif.setRepository(new File(appRealPath + "FilesUploadTemp\\"));
  // 设置存放临时文件的目录,web根目录下的ImagesUploadTemp目录
  // 用以上工厂实例化上传组件
  ServletFileUpload sfu = new ServletFileUpload(dfif);
  sfu.setSizeMax(MAX_SIZE); // 设置最大上传尺寸
  PrintWriter out = response.getWriter();
  // 从request得到所有上传域的列表
  List fileList = null;
  try {
  fileList = sfu.parseRequest(request);
  } catch (FileUploadException e) {// 处理文件尺寸过大异常
  if (e instanceof SizeLimitExceededException) {
  out.println("文件尺寸超过规定大小:" + MAX_SIZE + "字节");
  out.println("返回");
  return;
  }                      e.printStackTrace();               }               // 没有文件上传
  if (fileList == null || fileList.size() == 0) {
  out.println("请选择上传文件");
  out.println("返回");
  return;
  }
  // 得到所有上传的文件
  Iterator fileItr = fileList.iterator();
  // 循环处理所有文件
  while (fileItr.hasNext()) {
  FileItem fileItem = null;
  String path = null;
  long size = 0;
  // 得到当前文件
  fileItem = (FileItem) fileItr.next();
  // 忽略简单form字段而不是上传域的文件域(等)
  if (fileItem == null || fileItem.isFormField()) {
  continue;
  }
  // 得到文件的完整路径
  path = fileItem.getName();
  // 得到文件的大小
  size = fileItem.getSize();
  if ("".equals(path) || size == 0) {
  out.println("请选择上传文件");
  out.println("返回");
  return;
  }
  // 得到去除路径的文件名
  String t_name = path.substring(path.lastIndexOf("\\") + 1);
  // 得到文件的扩展名(无扩展名时将得到全名)
  String t_ext = t_name.substring(t_name.lastIndexOf(".") + 1);
  // 拒绝接受规定文件格式之外的文件类型
  int allowFlag = 0;
  int allowedExtCount = allowedExt.length;
  for (; allowFlag ");
  for (allowFlag = 0; allowFlag 返回");
  return;
  }
  /*
  * 根据系统时间生成上传后保存的文件名
  */
  //long now = System.currentTimeMillis();
  // 根据系统时间生成上传后保存的文件名
  //String prefix = String.valueOf(now);//转为字符串
  //System.out.println("servlet"+prefix);
  // 保存的最终文件完整路径,保存在web根目录下的FilesUploaded目录下
  /*String u_name = appRealPath + "FilesUploaded\\" + prefix + "."
  + t_ext;
  */                      String u_name = appRealPath + "FilesUploaded\\" + path ;                      try {                             // 保存文件
  fileItem.write(new File(u_name));
  /*out.println("文件上传成功. 已保存为: " + prefix + "." + t_ext
  + "
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics