`
uule
  • 浏览: 6359650 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

【使用Common-FileUpload框架上传文件基本代码】

    博客分类:
  • JSP
阅读更多

1.来源1:

http://hi.baidu.com/ljmybfq/blog/item/9b1f14ee4ee194f3b3fb957a.html/cmtid/467aff1115dd6f73cb80c401

来源2:

 http://zhangjunhd.blog.51cto.com/113473/18331

部分代码经过自己完善和修改,由于自己不熟练,所以基本上通常用到的都加到了里面。

 

所需包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar


首先下载:commons-fileUpload-1.2 的jar包:http://www.apache.org/commons/,同时可以把commons-IO的jar包一起下载,以后会用到的。
1、上传的前台页面:
    

<form action="MultipartTestServlet" enctype="multipart/form-data" method="post">
     <input type="text" name="username" /><br />
     <input type="file" name="myfile" /><br/>
     <input type="submit" />
</form>

 
2、上传的后台代码:    

   通过ServletFileUpload静态类来解析Request,工厂类会对mulipart类的表单中的所有字段进行处理,不只是file字段。

getName()得到文件名,getString()得到表单数据内容,isFormField()可判断是否为普通的表单项。

更多的属性介绍:

http://hi.baidu.com/qdblove/blog/item/c81db602286e3d064afb51dc.html
一个完整的例子:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("Access !");
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        //保存文件到服务器中
        DiskFileItemFactory factory = new DiskFileItemFactory();
        factory.setSizeThreshold(4096);
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setSizeMax(maxPostSize);
        try {
            List fileItems = upload.parseRequest(request);
            Iterator iter = fileItems.iterator();
            while (iter.hasNext()) {
                FileItem item = (FileItem) iter.next();
                if (!item.isFormField()) {
                    String name = item.getName();
                    System.out.println(name);
                    try {
                        item.write(new File(uploadPath + name));
                       // SaveFile s = new SaveFile();
                       // s.saveFile(name);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
            System.out.println(e.getMessage() + "结束");
        }
    }

 

public void doPost(HttpServletRequest request, HttpServletResponse response){
        String path= "C:/upload" ; 

		File  uploadPath = new File( path );// 上传文件目录
        if (!uploadPath.exists()) {
            uploadPath.mkdirs();
        }
        File  tempPathFile = new File( path+" /temp/");// 临时文件目录
        if (! tempPathFile.exists ()) {
            tempPathFile.mkdirs ();
        }

		DiskFileItemFactory factory = new DiskFileItemFactory();
		factory.setRepository(tempPathFile);  // 设置临时文件目录
		factory.setSizeThreshold(10 * 1024); // 设置缓冲区大小,这里是10kb

		ServletFileUpload   upload = new ServletFileUpload(factory);  // 获取上传对向   
		upload.setSizeMax(100*1024*1024);    //设置上传文件大小的上限,-1表示无上限

		List <FileItem> items = upload.parseRequest(request);  
		//上传文件,并解析出所有的表单字段,包括普通字段和文件字段
	  
		Iterator<FileItem>  it = items.iterator();
		while(it.hasNext()){
			FileItem  fi = (FileItem) it.next();
	 
			// if (!UtilValidate.isEmpty(fileName)) {判断是否为空
			if(! fi.getName().endsWith(".xls") ){     //判断扩展名             
			   //throws ...;
			} 
			
			//如果是普通表单项目,显示表单内容 
			if(fi.isFormField()){   
				String  fieldName = fi.getFieldName();
				if (fieldName.equals("username"))
					//对应demo1.html中type="text" name="username"
					System.out.print("the field name is" + fi.getString());//显示表单内容
				}else{
					// 如果是上传文件,显示文件名 
					System.out.println( fi.getName() + "   " +    fi.getContentType() + "   " +   fi.getSize());

					//保存文件,其实就是把缓存里的数据写到目标路径下
					if(fi.getName()!=null && fi.getSize()!=0){
						File fullFile = new File(fi.getName());  // fi.getName()获得文件名,包括路径 
						File savedFile= new File(uploadPath + fullFile.getName());
		 
						int index = 0; // 文件重名时,添加标识
						while (savedFile .exists()) {
							index++;
							savedFile = new File(uploadPath, "_" + index + "_" + fullFile.getName());
						} 
						fi.write(savedFile);   // 写到文件去
						fileName = savedFile.getName(); // 写入的文件名 
					}
				}
			}
		}
}
			

 


3、编译和配置servlet
       先设置classpath,使它包含commons-fileUpload的jar包路径,然后进行编译即可,注意这里的包路径。
       然后打开站点下的web-inf路径下的web.xml,在里面添加:

<servlet>
      <servlet-name>MultipartTestServlet</servlet-name>
      <servlet-class>upload.MultipartTestServlet</servlet-class>
</servlet> 
    <servlet>
      <servlet-name>dispatcher</servlet-name>
      <servlet-class>helloApp.DispatcherServlet</servlet-class>
</servlet>

 
好了,现在就可以文件上传了,不过运行之前记得在c:\下新建tmp和temp文件夹,别忘了,不然程序会报告错误的。

分享到:
评论
1 楼 小蝶兒 2012-12-03  
求问,如果我想让项目下的文件夹也显示上传的文件,该怎么做

相关推荐

    利用Common-fileupload封装的文件上传组件...附上源码.

    此外,`Common-fileupload`与Servlet API紧密集成,使得它易于与其他Java Web框架如Spring、Struts等结合使用。 为了实现文件上传,你需要创建一个Servlet或者控制器,配置MultipartConfigElement以指定临时文件...

    两篇网文:拦截器 Common-FileUpload

    在Struts2框架中结合使用拦截器和Common-FileUpload,可以创建一个安全且高效的文件上传系统。例如,你可以创建一个拦截器来验证上传文件的大小,防止过大文件导致服务器资源耗尽。同时,你还可以在Action中利用...

    common-io,common-fileupload.jar等jar包

    在Java开发中,`common...总之,`common-io`和`common-fileupload`是Java开发中的强大工具,它们简化了常见的I/O操作和文件上传处理,提高了开发效率。了解并熟练运用这些库,能帮助开发者更好地应对实际项目中的挑战。

    commons-fileupload-1.3.3.jar commons-io-2.5.jar

    使用这两个库来实现文件上传功能的基本步骤如下: 1. **配置Servlet容器**:首先,你需要确保你的Servlet容器(如Tomcat、Jetty)已经配置了对multipart/form-data请求的支持。这通常涉及到在web.xml文件中配置一个...

    上传架包commmon-fileupload common-io

    标题中的"上传架包commmon-fileupload common-io"指的是两个常用的Java库,它们分别是Apache Commons FileUpload和Apache Commons IO。这两个库在Java开发中扮演着重要角色,特别是处理文件上传和I/O操作。 Apache ...

    JAX-RS-FileUpload-Jersey-Example

    在本文中,我们将深入探讨如何使用Java API for RESTful Web Services (JAX-RS) 和 Jersey 实现文件上传功能。标题“JAX-RS-FileUpload-Jersey-Example”暗示了我们将集中讨论如何利用这两个强大的工具来创建一个...

    struts中使用Common-fileUpload.的几篇网络文章

    1. **文件上传的基本概念** 文件上传通常涉及到HTML表单,其中`enctype="multipart/form-data"`属性必须设置,以便浏览器能够正确地将文件作为多部分数据发送到服务器。在Struts框架中,需要配置Action类来处理这些...

    dom4j、common-fileupload、hibernate、jdom、log4j、proxool、spring、struts、webwork等工具、框架源码

    2. **Common-FileUpload**: 这是Apache Commons的一个模块,用于处理HTTP协议中的多部分文件上传请求。它简化了在Web应用程序中接收和处理大文件上传的过程,支持分块上传和错误处理。 3. **Hibernate**: Hibernate...

    common fileupload上传组件包

    "Common Fileupload上传组件包"是一个专用于处理Web应用程序中文件上传功能的工具包。这个包包含两个核心组件:`commons-io-1.4.jar`和`commons-fileupload-1.2.1.jar`。这两个组件在实现文件上传过程中扮演着至关...

    commons-io-1.3.1.jar和commons-io-1.3.1.jar

    Struts2默认使用的是Jakarta的Common-FileUpload框架来上传文件,因此,要在web应用中增加两个Jar文件:commons-fileupload-1.2.jar和commons-io-1.3.1.jar。它在原上传框架上做了进一步封装,简化了文件上传的代码...

    common fileupload

    以上代码展示了如何使用Common FileUpload处理一个简单的文件上传请求。实际项目中,你可能还需要处理更复杂的场景,如验证文件类型、大小、重命名文件等。 总之,Common FileUpload是一个强大且灵活的Java文件上传...

    java web文件的上传和下载.pdf

    #### 12.2 使用Common-FileUpload组件上传文件 Common-FileUpload组件是由Apache组织开发的一个强大的工具包,专门用于处理文件上传。它简化了文件上传的编程过程,并提供了良好的兼容性和稳定性。 - **单个文件...

    Ext文件上传完整包

    在ExtJS中,有时候我们需要处理文件上传的功能,这时就涉及到了"Ext.ux.dialog"和"Common-fileupload"这两个关键概念。 **Ext.ux.dialog** Ext.ux.dialog是ExtJS的一个扩展组件库,它为用户提供了一些额外的对话框...

    Jakarta Commons使用

    通过了解和使用 Jakarta Commons,开发者可以有效地提高代码质量,减少错误,同时也能提高开发效率,使得项目更具可维护性。对于需要处理输入输出、字符串操作、网络通信等问题的项目来说,Jakarta Commons 是一个...

    Struts2文件上传

    Struts2框架虽然自身并不直接提供文件上传功能,但它支持集成Common-FileUpload和COS等第三方文件上传框架,通过对其进一步封装,简化了文件上传的代码实现,提高了开发效率。 - **Common-FileUpload**:由Apache...

    commonfileupload.zip 文件上传功能

    `common-fileupload`标签可能指的是Apache Commons FileUpload库,这是一个Java库,专门用于处理基于Servlet的文件上传。它能处理多部分/表单数据,使开发人员能够轻松地处理文件上传请求。使用此库,我们可以通过...

    Flex+Java 文件上传

    在开始之前,我们需要下载Apache Commons项目中的两个库文件,它们是`common-fileupload-1.1.1.jar`和`common-io-1.2.jar`。这两个库文件提供了Java Servlet进行文件上传所需的功能。将它们添加到Java项目的类路径...

    带进度条的上传,直接部署运行(jsp,servlet,eclipse下开发)

    这个项目是基于Java Web技术实现的,使用了jsp、servlet以及eclipse作为开发环境,并且依赖于`common-fileupload.jar`库来处理文件上传。 首先,我们来看`jsp`(JavaServer Pages)。JSP是一种动态网页技术,它允许...

    jQuery-File-Upload-Java-master.zip_file jquery ja_jQuery File Up

    在描述中提到的 "common-fileupload.jar" 文件,是Java环境下处理文件上传的库,用于处理服务器端的文件接收和存储。 在Java环境中,jQuery File Upload通常与Servlet或Spring MVC等框架结合使用。在服务器端,你...

    struts2实现文件上传

    #### 二、文件上传的基本原理 文件上传主要涉及到 HTTP 协议中的 `POST` 方法和 `multipart/form-data` 编码方式。当客户端需要上传文件时,通常会通过 HTML 表单发送 `POST` 请求,并且表单的 `enctype` 属性设置...

Global site tag (gtag.js) - Google Analytics