- 浏览: 36503 次
- 性别:
- 来自: 杭州
文章分类
最新评论
版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原文出处, 即下面的声明.
原文出处:http://tbwuming.iteye.com/admin/blogs/1520140
1. maven依赖
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2.2</version> </dependency>
2. fileload处理类
import java.io.File; import java.io.PrintWriter; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class FileUpload { private static final Logger logger = LoggerFactory.getLogger(FileUpload.class); private static final int DEFAULT_SIZE_THRESHOLD = 1 * 1024 * 1024; private static final long DEFAULT_MAX_FILE_SIZE = 8 * 1024 * 1024; private String uploadPath; private String tempPath; private Integer thresholdSize; private Long maxFileSize; private ServletFileUpload upload; // 初始化fileload public void init() { DiskFileItemFactory diskFactory = new DiskFileItemFactory(); // 设置文件大小超过缓存时所存放的目录 diskFactory.setRepository(new File(tempPath)); // 设置缓存大小 if (thresholdSize == null) diskFactory.setSizeThreshold(DEFAULT_SIZE_THRESHOLD); else diskFactory.setSizeThreshold(thresholdSize); upload = new ServletFileUpload(diskFactory); // 设置最大可上传的文件大小 if (maxFileSize == null) upload.setSizeMax(DEFAULT_MAX_FILE_SIZE); else upload.setSizeMax(maxFileSize); } // 获取文件列表 @SuppressWarnings("unchecked") public List<FileItem> getFileItems(HttpServletRequest request) { List<FileItem> fileItems = null; try { fileItems = (List<FileItem>) upload.parseRequest(request); } catch (FileUploadException e) { logger.error("process upload request error", e); } return fileItems; } public File process(PrintWriter out, FileItem item, Throwable throwable) { String filename = item.getName(); logger.info("full filename:" + filename); if (StringUtils.isBlank(filename)) { logger.warn("filename {} is null", filename); return null; } // linux和windows路径分隔符不一样,因此处理 int index = filename.lastIndexOf("/"); if (index == -1) index = filename.lastIndexOf("\\"); // 获取文件名 filename = filename.substring(index + 1, filename.length()); long fileSize = item.getSize(); if (StringUtils.isBlank(filename) || fileSize == 0) { logger.warn("filename {} is empty", filename); return null; } // 写文件 String pathname = uploadPath + "/" + filename; File uploadFile = new File(pathname); try { item.write(uploadFile); } catch (Exception e) { throwable = e; logger.error("write file error, file={}", pathname, e); } out.println(filename + " file upload complete ..."); out.println("file size:" + fileSize + "\r\n"); return uploadFile; } public void setUploadPath(String uploadPath) { this.uploadPath = uploadPath; } public void setTempPath(String tempPath) { this.tempPath = tempPath; } public void setThresholdSize(Integer thresholdSize) { this.thresholdSize = thresholdSize; } public void setMaxFileSize(Long maxFileSize) { this.maxFileSize = maxFileSize; } }
3. servlet
import java.io.IOException; import java.io.PrintWriter; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class UploadServlet extends HttpServlet { private static final long serialVersionUID = -5562457977157562484L; private static final Logger logger = LoggerFactory.getLogger(UploadServlet.class); private FileUpload fileUpload; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/plain;charset=utf-8"); PrintWriter out = response.getWriter(); List<FileItem> fileItems = (List<FileItem>) fileUpload.getFileItems(request); for (FileItem item : fileItems) { if (!item.isFormField()) { Throwable throwable = null; fileUpload.process(out, item, throwable); } } logger.info("upload file success"); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } public void setFileUpload(FileUpload fileUpload) { this.fileUpload = fileUpload; } }
4. html 内容
<html> <head> <title>上传文件</title> </head> <body> <center> <form name="uploadForm" method="post" enctype="multipart/form-data" action="/upload"> <table> <tr> <th colspan="2"> 上传文件 </th> </tr> <tr> <td> Upload File: </td> <td> <input type="file" name="uploadFilename" size="30"/> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" name="submit" value="上传"> <input type="reset" name="reset" value="重置"> </td> </tr> </form> </center> </body> </html>
说明:
1). form提交模式需要是post模式,当页面传输内容比较大的时候一般时候post方式
2). 指明enctype为multipart/form-data类型
3). action中指定servlet访问相对路径
5. spring配置
<bean class="com.taobao.crawler.web.UploadServlet"> <property name="fileUpload" ref="fileUpload" /> </bean> <bean id="fileUpload" class="com.taobao.crawler.web.FileUpload" init-method="init"> <property name="uploadPath" value="./config" /> <property name="tempPath" value="./temp" /> </bean>
发表评论
-
精简jre
2013-07-29 15:20 11640. 思路: 1)把自己的应用程序打包成可运行的 ... -
java map的重复键值的排序
2013-05-22 20:05 56881. 概述 在java map中,一般有重复的k ... -
3. Java基础和细节-继承
2013-04-16 17:35 01. 多态 可以引用多种实际类型的现象称为 ... -
2. Java基础和细节-对象与类
2013-04-16 10:28 7591. 类之间的关系 1)依赖(uses- ... -
1. Java基础和细节-Java的基本程序设计和结构
2013-04-15 16:17 12611. 注释 1)单 ... -
0. Java基础和细节-血和泪啊
2013-04-15 16:07 7352013.4.15通知晋升结果——晋升失败 ... -
Java中变化无常的常量
2011-08-19 16:39 1018Java中变化无常的常量 ... -
Linux下C gsoap client访问java webservice server
2011-08-17 20:42 34291 http://gsoap2.sourceforge.net ... -
LiveValidation验证
2011-08-17 20:36 9311、http://livevalidation.com/dow ... -
Java 命令行参数
2011-08-17 20:04 774public class CmdLineArgsTest { ...
相关推荐
- **MultipartRequest**: 在Servlet中,处理文件上传通常需要解析多部分表单数据,这可以通过Apache Commons FileUpload库或Java内置的`Part`接口实现。`MultipartRequest`是Apache Commons FileUpload库中的一个类...
- **文件上传**:这是整个示例的核心功能,涉及到用户通过Web页面上传文件到服务器的过程。 **文件名解析:** "多文件上传--fileupload" 这个文件名表明压缩包内可能包含一个多文件上传的示例,具体使用了...
【使用commons-fileupload上传文件】 Apache Commons FileUpload是Apache组织的一个子项目,专注于处理HTTP文件上传。这个组件提供了一个简洁的API,使得开发者能够轻松地在Java应用中处理由浏览器发送的多部分...
使用fileupload组件实现文件上传功能 FileUpload组件是Apache提供的一款文件上传组件,能够帮助我们轻松实现文件上传功能。下面我们将详细介绍使用FileUpload组件实现文件上传功能的步骤和要点: 首先,需要引入两...
在Web开发中,允许用户上传文件是常见的需求,例如提交简历、上传图片或者分享文档。HTTP协议本身并不支持文件上传,但是通过MIME多部分/相关格式,我们可以将文件内容作为POST请求的一部分发送。Apache Commons ...
`FileUpload`通常指的是一个用于处理用户通过Web表单上传文件的组件或技术。本篇将详细讲解这一主题,包括文件上传的基本原理、使用FileUpload进行文件上传的步骤以及相关注意事项。 一、文件上传的基本原理 文件...
`FileUpload`是处理用户通过表单上传文件的关键组件。为了确保服务器稳定运行和资源管理,我们需要限制上传文件的大小,防止大文件耗尽服务器资源或导致内存溢出。本文将详细讲解如何在不同框架和环境中设置`...
可以通过`ServletFileUpload`设置最大上传文件大小和整个请求的总大小,以防止大文件上传导致服务器资源耗尽。 ```java upload.setSizeMax(maxFileSize); // 单个文件大小限制 upload.setFileSizeMax...
4. **错误处理**:`commons-fileupload`还提供了处理上传过程中可能出现的错误和异常的机制,如文件大小超出限制、文件类型不合法等。 在`描述`中提到的`commons-fileupload-1.2.2.jar`和`commons-io.jar`是实现...
在Java中,我们通常使用Servlet API或第三方库如Apache Commons FileUpload来处理文件上传。以下是一个基本的步骤: - 创建一个HTML表单,包含`<input type="file">`元素,让用户选择文件。 - 使用Servlet接收POST...
本示例"Java(Servlet)上传文件的demo"提供了一个简单的文件上传功能,适用于初学者理解和实践。以下是对这个demo的详细解析: 1. **Servlet基本概念**: Servlet是一个Java类,遵循Servlet API规范,它扩展了...
本篇文章将详细讲解如何使用`Commons-FileUpload`进行文件上传,并读取上传文件的内容。 首先,了解`Commons-FileUpload`的工作原理。它解析HTTP请求,将多部分的数据分割成单独的部分,这些部分可以是文本或文件。...
2. 服务器端处理上传文件:在服务器端,使用 servlet 处理上传的文件,并将其存储到指定的位置。 3. 文件下载:在服务器端,提供文件下载的接口,客户端可以通过该接口下载文件。 jsp 页面的实现 在 jsp 页面中,...
在web.xml文件中,设置maxPostSize属性,允许上传文件的大小,例如: ```xml <filter-name>hiddenHttpMethodFilter <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter <filter-name>...
总结来说,`fileupload上传文件工具开发jar包`是一个集成了Apache Commons `io`和`fileupload`的便捷工具,主要用于Java环境中处理HTTP文件上传。它提供了文件上传的解析、存储和处理能力,为开发者构建安全、高效的...
本教程将详细介绍如何使用JSP和Servlet结合Apache Commons FileUpload库实现文件上传,并同时处理text文本。 首先,我们需要在项目中引入Apache Commons FileUpload库。通常,这可以通过在pom.xml文件中添加依赖来...
Apache Commons FileUpload 是一个用于处理 HTTP 请求中多部分(multipart)数据的 Java 库,尤其适合上传文件。在本文中,我们将深入探讨如何利用该库实现多个文件的上传功能。 一、准备工作 在使用 Apache ...
该库提供了解析请求、存储上传文件和处理异常的能力。 **二、基本原理** 文件上传涉及到客户端和服务器之间的交互。用户通过HTML表单选择文件后,浏览器将文件封装成多部分数据,发送到服务器。FileUpload库负责...
在这个"Servlet实现的上传文件实例"中,我们将深入探讨如何使用Servlet来处理客户端上传的文件。上传文件是Web应用程序中常见的功能,例如用户提交简历、上传图片或者共享文档等。以下是关于这个主题的详细知识点: ...
// 设置最大上传文件大小,-1表示无限制 ``` 4. **解析请求**:使用`FileUpload`对象的`parseRequest()`方法解析请求,这将返回一个`FileItemIterator`,我们可以遍历这个迭代器获取每个上传的文件项。 ```java ...