上传文件(2)

从网上下载commons-fileupload-1.3.1,commons-io-2.4两个jar包

  1) 确定本次请求是否是文件上传请求

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

   2) 创建文件上传的工厂对象

FileItemFactory factory=new DiskFileItemFactory();

 3) 创建ServletFileUpload对象,并将工厂对象作为参数传入

 ServletFileUpload upload=new ServletFileUpload(factory);

   4) 使用上传对象从请求对象中解析出提交的所有表单元素

 List<FileItem> lstForms=upload.parseRequest(request);

   5) 遍历表单元素集合,实现取出表单元素和上传文件

   for (FileItem fileItem : lstForms) {

        //判断每一个表单元素是否是普通表单

        if(fileItem.isFormField()){

            System.out.println(fileItem.getString("UTF-8"));

        }else{

            //上传前准备工作

                //a、上传后的路径this.getServletContext().getRealPath("/")会出去当前项目在 部署的服务器上的绝对路径

                String path=this.getServletContext().getRealPath("/")+"files/";

                //b、找出要上传的文件的名字

                String fileName=fileItem.getName();

                fileName=fileName.substring(fileName.lastIndexOf("\\")+1);

                //c、上传

                fileItem.write(new File(path+fileName));

                out.println("<h2>"+fileName+"上传成功!</h2>");

    }

 5)实际应用中的代码

      String savePath = request.getSession().getServletContext().getRealPath("/") + "upload/";

for (FileItem item : fileItems) {
    if (item.isFormField()) {
	 if ("choose".equals(item.getFieldName())) {
		choose = item.getString("UTF-8");
	        System.out.println(choose);
	  }else if ("title".equals(item.getFieldName())) {
	         title = item.getString("UTF-8");
	         System.out.println(title);
	  } else if("content".equals(item.getFieldName())){
	         content = item.getString("UTF-8");
	         System.out.println(content);
	  }else{	                      
	      
	         String s = item.getString("UTF-8");
	         System.out.println(s);
	       }
    }else{
          fileName = item.getName();
	  String pictures_url = null;
    	  File file = new File(savePath + "/");
	      if (!file.exists()) {
		        file.mkdirs();
		                   }
			 String wirteFile_url = savePath  + "/" + fileName; 
			 File wirteFile = new File(wirteFile_url); 
			 item.write(wirteFile);

猜你喜欢

转载自xiaotiger.iteye.com/blog/2372900