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文件夹,别忘了,不然程序会报告错误的。
相关推荐
此外,`Common-fileupload`与Servlet API紧密集成,使得它易于与其他Java Web框架如Spring、Struts等结合使用。 为了实现文件上传,你需要创建一个Servlet或者控制器,配置MultipartConfigElement以指定临时文件...
在Struts2框架中结合使用拦截器和Common-FileUpload,可以创建一个安全且高效的文件上传系统。例如,你可以创建一个拦截器来验证上传文件的大小,防止过大文件导致服务器资源耗尽。同时,你还可以在Action中利用...
在Java开发中,`common...总之,`common-io`和`common-fileupload`是Java开发中的强大工具,它们简化了常见的I/O操作和文件上传处理,提高了开发效率。了解并熟练运用这些库,能帮助开发者更好地应对实际项目中的挑战。
标题中的"上传架包commmon-fileupload common-io"指的是两个常用的Java库,它们分别是Apache Commons FileUpload和Apache Commons IO。这两个库在Java开发中扮演着重要角色,特别是处理文件上传和I/O操作。 Apache ...
在本文中,我们将深入探讨如何使用Java API for RESTful Web Services (JAX-RS) 和 Jersey 实现文件上传功能。标题“JAX-RS-FileUpload-Jersey-Example”暗示了我们将集中讨论如何利用这两个强大的工具来创建一个...
1. **文件上传的基本概念** 文件上传通常涉及到HTML表单,其中`enctype="multipart/form-data"`属性必须设置,以便浏览器能够正确地将文件作为多部分数据发送到服务器。在Struts框架中,需要配置Action类来处理这些...
2. **Common-FileUpload**: 这是Apache Commons的一个模块,用于处理HTTP协议中的多部分文件上传请求。它简化了在Web应用程序中接收和处理大文件上传的过程,支持分块上传和错误处理。 3. **Hibernate**: Hibernate...
"Common Fileupload上传组件包"是一个专用于处理Web应用程序中文件上传功能的工具包。这个包包含两个核心组件:`commons-io-1.4.jar`和`commons-fileupload-1.2.1.jar`。这两个组件在实现文件上传过程中扮演着至关...
Struts2默认使用的是Jakarta的Common-FileUpload框架来上传文件,因此,要在web应用中增加两个Jar文件:commons-fileupload-1.2.jar和commons-io-1.3.1.jar。它在原上传框架上做了进一步封装,简化了文件上传的代码...
以上代码展示了如何使用Common FileUpload处理一个简单的文件上传请求。实际项目中,你可能还需要处理更复杂的场景,如验证文件类型、大小、重命名文件等。 总之,Common FileUpload是一个强大且灵活的Java文件上传...
在ExtJS中,有时候我们需要处理文件上传的功能,这时就涉及到了"Ext.ux.dialog"和"Common-fileupload"这两个关键概念。 **Ext.ux.dialog** Ext.ux.dialog是ExtJS的一个扩展组件库,它为用户提供了一些额外的对话框...
通过了解和使用 Jakarta Commons,开发者可以有效地提高代码质量,减少错误,同时也能提高开发效率,使得项目更具可维护性。对于需要处理输入输出、字符串操作、网络通信等问题的项目来说,Jakarta Commons 是一个...
Struts2框架虽然自身并不直接提供文件上传功能,但它支持集成Common-FileUpload和COS等第三方文件上传框架,通过对其进一步封装,简化了文件上传的代码实现,提高了开发效率。 - **Common-FileUpload**:由Apache...
`common-fileupload`标签可能指的是Apache Commons FileUpload库,这是一个Java库,专门用于处理基于Servlet的文件上传。它能处理多部分/表单数据,使开发人员能够轻松地处理文件上传请求。使用此库,我们可以通过...
在开始之前,我们需要下载Apache Commons项目中的两个库文件,它们是`common-fileupload-1.1.1.jar`和`common-io-1.2.jar`。这两个库文件提供了Java Servlet进行文件上传所需的功能。将它们添加到Java项目的类路径...
这个项目是基于Java Web技术实现的,使用了jsp、servlet以及eclipse作为开发环境,并且依赖于`common-fileupload.jar`库来处理文件上传。 首先,我们来看`jsp`(JavaServer Pages)。JSP是一种动态网页技术,它允许...
在描述中提到的 "common-fileupload.jar" 文件,是Java环境下处理文件上传的库,用于处理服务器端的文件接收和存储。 在Java环境中,jQuery File Upload通常与Servlet或Spring MVC等框架结合使用。在服务器端,你...
#### 二、文件上传的基本原理 文件上传主要涉及到 HTTP 协议中的 `POST` 方法和 `multipart/form-data` 编码方式。当客户端需要上传文件时,通常会通过 HTML 表单发送 `POST` 请求,并且表单的 `enctype` 属性设置...
FileUpload 使得在你可以在应用和Servlet中容易的加入强大和高性能的文件上传能力 HttpClient Commons-HttpClient 提供了可以工作于HTTP协议客户端的一个框架. IO IO 是一个 I/O 工具集 Jelly Jelly是一个基于 ...