应用common-upload组件上传文件

上一篇 / 下一篇  2009-03-17 13:55:18 / 个人分类:Jsp之路

该组件使用的情况如下:
1、修改web.xml文件,为servlet增加一个参数作为上传路径

  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>uploadFileServlet</servlet-name>
    <servlet-class>com.kursk.uploadFileServlet</servlet-class>
    <init-param>
    <param-name>url</param-name>
    <param-value>uploads</param-value>
    </init-param>
  </servlet>

2、uploadFileServlet

 private String savePath;//获取上传路径
 ServletContext sc;

 public void init(ServletConfig config) {
  savePath = config.getInitParameter("savePath");;//获取上传路径
  sc = config.getServletContext();//获取servlet地址
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  DiskFileItemFactory factory = new DiskFileItemFactory();
  ServletFileUpload upload = new ServletFileUpload(factory);
  try {
   List items = upload.parseRequest(request);//把文件从客户端上传到服务器内存
   Iterator itr = items.iterator();
/*
上传后,form表单的所有内容,文件(二进制),文本域(字符串)都被上传到了服务器端的内存,用itr来得到这些对象
*/
   while (itr.hasNext()) {//于是开始循环,对文件和文本域分别处理
    FileItem item = (FileItem) itr.next();//FileItem是upload组建中的一个对象,用于处理上传的对象
    if (item.isFormField()) {//这个方法判断是否是文本域,是,返回true;否则false
     System.out.println("表单参数名:" + item.getFieldName() + ",表单参数值:" + item.getString("UTF-8"));
    } else {//下面是文件的处理方法
     if (item.getName() != null && !item.getName().equals("")) {
      System.out.println("上传文件的大小:" + item.getSize());
      System.out.println("上传文件的类型:" + item.getContentType());
      // item.getName()返回上传文件在客户端的完整路径名称
      System.out.println("上传文件的名称:" + item.getName());

      File tempFile = new File(item.getName());//item.getName()得到是全路径,用File.getName()来得到单独文件名
      File file = new File(sc.getRealPath("/") + savePath, tempFile.getName());
      System.out.println(sc.getRealPath("/") + savePath);
      item.write(file);//这才是把文件从服务器内存上传到服务器硬盘
      request.setAttribute("upload.message", "上传文件成功!");
     }else{
      request.setAttribute("upload.message", "没有选择上传文件!");
     }
    }
   }
  } catch (Exception e) {
   e.printStackTrace();
   request.setAttribute("upload.message", "上传文件失败!");
  }
  request.getRequestDispatcher("/uploadResult.jsp").forward(request, response);
 }


TAG:

 

评分:0

我来说两句

Open Toolbar