Apache的上传组件其它已经被封装到Struts那中去了,我在网上找到了一些文章介绍它是如何上传文件的,自己跟了一下源码也写了一个上传的实例,仅供参考!
一、JSP页面如下:
<form method="POST" action="UploadServlet" ENCTYPE="multipart/form-data"> <table> <tr><td><input type="text" name="subject" /></td></tr> <tr><td><input type="text" name="subject" /></td></tr> <tr><td><input type="file" name="file1" /></td></tr> <tr><td><input type="file" name="file2" /></td></tr> <tr><td><input type="file" name="file3" /></td></tr> <tr><td><input type="submit" value="上传"/></td></tr> </table> </form> <br /> <a href="DownLoadServlet">下载</a>
二、上传的Servlet如下:
/** * Apache组件上传 * * @author mingxue.zhang@163.com * @date 2010-10-30 */ public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 5827821285414610443L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 上传文件目录 String uploadDir = this.getServletContext().getRealPath("/uploadDir"); DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存区块大小4KB factory.setSizeThreshold(4 * 1024); // 设置暂存容器,当上传文件大于设置的内存块大小时,用暂存容器做中转 factory.setRepository(new File(this.getServletContext().getRealPath( "/temp"))); ServletFileUpload fileUpload = new ServletFileUpload(factory); fileUpload.setSizeMax(1024 * 1024 * 100); fileUpload.setFileSizeMax(1024 * 1024 * 10); List<FileItem> fileItemList = null; try { fileItemList = fileUpload.parseRequest(request); } catch (FileUploadException e) { e.printStackTrace(); } Iterator<FileItem> fileItemIterator = fileItemList.iterator(); FileItem fileItem = null; while (fileItemIterator.hasNext()) { fileItem = fileItemIterator.next(); // 普通文件框上传 if (fileItem.isFormField()) { String filedName = fileItem.getFieldName(); String filedValue = fileItem.getString("GBK");// 编码格式 System.out.println(filedName);// 文件框名称 System.out.println(filedValue);// 文件的值 } else { String filedName = fileItem.getFieldName();// 文件上传框的名称 // 获取文件上传的文件名 String OriginalFileName = takeOutFileName(fileItem.getName()); System.out.println("原始文件名:"+OriginalFileName); if (!"".equals(OriginalFileName)) { // 根据上传的文件名重新命名 String newFileName = getNewFileName(OriginalFileName); System.out.println("重新名:"+newFileName); File writeToFile = new File(uploadDir + File.separator + newFileName); try { fileItem.write(writeToFile); } catch (Exception e) { e.printStackTrace(); } } } } } private String takeOutFileName(String filePath) { String fileName = filePath; if (null != filePath && !"".equals(filePath)) { int port = filePath.lastIndexOf("\\"); if(port != -1){ fileName = filePath.substring(port+1); } } return fileName; } private String getNewFileName(String originalFileName) { StringBuffer newFileName = new StringBuffer(); if (null != originalFileName && !"".equals(originalFileName)) { int port = originalFileName.lastIndexOf("."); String type = ""; String fileName = ""; if (port != -1) { type = originalFileName.substring(port + 1); fileName = originalFileName.substring(0, port); } else { fileName = originalFileName; } StringBuffer suffix = new StringBuffer("_"); suffix.append(Calendar.getInstance().getTimeInMillis()); suffix.append("_"); suffix.append(new Random().nextInt(100)); newFileName.append(fileName); newFileName.append(suffix); newFileName.append("."); newFileName.append(type); } return newFileName.toString(); } }
三、下载的Servlet如下:
/** * Apache组件下载 * * @author mingxue.zhang@163.com * @date 2010-10-30 */ public class DownLoadServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filePath = "D:\\Tomcat\\apache-tomcat-6.0.26\\webapps\\ApacheUpload\\uploadDir\\"; String fileName = "2010年10月安排2_1288447490125_56.txt"; String Originalname = "2010年10月安排2.txt"; response.setContentType("application/octet-stream"); String isoFileName = new String(Originalname.getBytes("GB2312"), "ISO8859-1"); response.setHeader("Content-Disposition", "attachment; filename=" + isoFileName); ServletOutputStream out = response.getOutputStream(); BufferedOutputStream bufferOut = new BufferedOutputStream(out); FileInputStream inputStream = new FileInputStream(new File(filePath, fileName)); BufferedInputStream bufferInput = new BufferedInputStream(inputStream); byte[] buffer = new byte[5 * 1024]; int length = 0; while ((length = bufferInput.read(buffer)) != -1) { bufferOut.write(buffer, 0, length); } bufferInput.close(); inputStream.close(); bufferOut.close(); out.close(); } }
Servlet配置如下:
<servlet> <servlet-name>UploadServlet</servlet-name> <servlet-class>com.mengya.servlet.UploadServlet</servlet-class> </servlet> <servlet> <servlet-name>DownLoadServlet</servlet-name> <servlet-class>com.mengya.servlet.DownLoadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UploadServlet</servlet-name> <url-pattern>/UploadServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>DownLoadServlet</servlet-name> <url-pattern>/DownLoadServlet</url-pattern> </servlet-mapping>
相关推荐
本资源为处理表单文件上传的一个开源组件( Commons-fileupload ),该...注意:使用Commons-fileupload组件实现文件上传,需要导入该组件相应的支撑jar包:Commons-fileupload和commons-io;该jar包压缩包中已包含。
第1个上传组件commons-fileupload =============commons-fileupload ================ common-fileupload组件是apache的一个开源项目之一,可以从http://jakarta.apache.org/commons/fileupload/下载。该组件简单...
用于servlet文件上传的组件,方便初学java web开发的人下载使用
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
commons-fileupload-1.3.1.jar和commons-io-2.2.jar.zip
1.commons-fileupload.jar(commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件) 2.commons-io.jar(commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的) 3....
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
项目用的上传组件是apache的fileupload,需要两个库文件commons-fileupload-1.2.1.jar和commons-io-1.4.jar
Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar ...
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <!DOCTYPE ...
文件上传和下载功能是Java Web必备技能,很实用。 本文使用的是Apache下的著名的文件上传组件 org.apache.commons.fileupload 实现 下面结合最近看到的一些资料以及自己的尝试,先写第一篇文件上传。后续会逐步实现...
Commons-FileUpload(以及Commons-IO) 注:加*的包可使用MyEclipse自带的类库。 Web框架(跨浏览器) FckEditor 可视化编辑HTML XLoadTree 动态加载XML生成JavaScript树组件 jQuery AJAX框架-查询DOM对象,简洁,...
Apache fileupload 文件上传组件 Apache commons-collections 封装好的各种集合类和集合工具类 Apache commons-io Apache基金会创建并维护的Java函数库 Apache commons-logging 通用的日志接口 dom4j 优秀的JavaXML ...
文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。
此外,本书的配套光盘还免费提供了价值人民币330元的java教学视频,对java语言进行了全面讲解,帮助一些不会java语言的读者快速地从java基础知识的学习中过渡到java web的学习与开发上. 第1部分 xml篇. 第1章 xml...
Apache Commons包中的一个,java.io.*的扩展,输入输出,支持文件上传 commons-fileupload.jar Apache Commons包中的一个,是一个通过Http接收上传的文件并处理结果文件的库 dom4j-1.4.jar 和 jaxen-1.1.1.jar 是一...
文件上传与下载 文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的 ...,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件 为例,为jsp应用添加文件上传功能。
文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。