一、所需要的包:
1、commons-fileupload-1.2.1.jar:
下载地址
http://commons.apache.org/downloads/download_fileupload.cgi
2、commons-io-1.4.jar:
下载地址
http://commons.apache.org/downloads/download_io.cgi
二、注意事项:
form表单里面要加上enctype="multipart/form-data"
三、代码示例
1、jsp代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>upload</title>
</head>
<body>
<form action="uploadServlet" method="post" enctype="multipart/form-data">
<table>
<caption>上传实例</caption>
<tr>
<td>姓名</td>
<td>
<input type="text" name="name">
</td>
</tr>
<tr>
<td>年龄</td>
<td>
<input type="text" name="age">
</td>
</tr>
<tr>
<td>照片</td>
<td>
<input type="file" name="image">
</td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" value="提交">
</td>
</tr>
</table>
</form>
</body>
</html>
2、UploadServlet代码
package servlet;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
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.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
/**
* 上传servlet
* @author lisanlai
*
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public UploadServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@SuppressWarnings("unchecked")
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
// 设置字符编码为UTF-8, 这样支持汉字显示
response.setCharacterEncoding("UTF-8");
Writer o = response.getWriter();
/**
* 首先判断form的enctype是不是multipart/form-data
* 同时也判断了form的提交方式是不是post
* 方法:isMultipartContent(request)
*/
if(ServletFileUpload.isMultipartContent(request)){
request.setCharacterEncoding("utf-8");
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置文件存放的临时文件夹,这个文件夹要真实存在
File fileDir = new File("../webapps/fileupload/tmp/");
if(fileDir.isDirectory() && fileDir.exists()==false){
fileDir.mkdir();
}
factory.setRepository(fileDir);
//设置最大占用的内存
factory.setSizeThreshold(1024000);
//创建ServletFileUpload对象
ServletFileUpload sfu = new ServletFileUpload(factory);
sfu.setHeaderEncoding("utf-8");
//设置单个文件最大值byte
sfu.setFileSizeMax(102400000);
//所有上传文件的总和最大值byte
sfu.setSizeMax(204800000);
List<FileItem> items = null;
try {
items = sfu.parseRequest(request);
}catch (SizeLimitExceededException e) {
System.out.println("文件大小超过了最大值");
} catch(FileUploadException e) {
e.printStackTrace();
}
//取得items的迭代器
Iterator<FileItem> iter = items==null?null:items.iterator();
//图片上传后存放的路径目录
File images = new File("D:/upload/images/");
if(images.exists()==false){
images.mkdirs();
}
//迭代items
while(iter!=null && iter.hasNext()){
FileItem item = (FileItem) iter.next();
//如果传过来的是普通的表单域
if(item.isFormField()){
System.out.print("普通的表单域:");
System.out.print(new String(item.getFieldName()) + " ");
System.out.println(new String(item.getString("UTF-8")));
}
//文件域
else if(!item.isFormField()){
System.out.println("源图片:" + item.getName());
String fileName = item.getName().substring(item.getName().lastIndexOf("\\"));
BufferedInputStream in = new BufferedInputStream(item.getInputStream());
//文件存储在D:/upload/images目录下,这个目录也得存在
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(new File(images.getAbsolutePath()+ fileName)));
Streams.copy(in, out, true);
o.write("文件上传成功");
}
}
}else {
System.out.println("表单的enctype 类型错误");
}
}
}
3、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>UploadTest</display-name>
<welcome-file-list>
<welcome-file>upload.jsp</welcome-file>
</welcome-file-list>
<servlet>
<description></description>
<display-name>UploadServlet</display-name>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>servlet.UploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/uploadServlet</url-pattern>
</servlet-mapping>
</web-app>
分享到:
相关推荐
commons-fileupload-1.0上传组件使用实例.以及使用组件的乱码问题。
一个简单的jsp上传实例,使用commons-fileupload实现。其代码已经上传在另外一个资源里。该文档也在附录中附了代码。
本人编写了一个名为《commons-fileupload实现jsp上传实例(教程)》的文档,此次上传资源为该文档对应的源代码。
基于HTTP传输协议的Web网页中,采用嵌入Commonsfileupload组件的Struts2框架,实现了文件的上传与下载.利用OGNL表达式提取Session持久层中的文件名,并利用此文件名实现下载文件的动态更名.灵活利用struts2.0自身...
目前最稳定,最实用的上传组件.commons-fileupload-1.2.jar.
本文实例为大家分享了JSP使用commons-fileupload实现文件上传代码,供大家参考,具体内容如下 1、准备: 将commons-fileupload-1.1.zip和commons-io-1.1.zip复制到”\WEB-INF\lib”目录下 2、首先是Servlet:...
基于HTTP传输协议的Web网页中,采用嵌入Commons-fileupload组件的Struts2框架,实现了文件的上传与下载。利用OGNL表达式提取Session持久层中的文件名,并利用此文件名实现下载文件的动态更名。灵活利用struts2.0自身...
1、将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为 multipart/form-data。代码如下: <body> 上传图书课件 ...
Commons-FileUpload组件进行上传文件,与使用sql语句技巧进行分页显示
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp *" pageEncoding="gb2312"%> <!DOCTYPE ...
Commons-fileupload工具的API与开发实例解析(一)
不错的例子!!!适合初学者学习,用的commons-fileupload组件,还有commons-io组件,这两个是依赖在一起的!!!!!
commons-fileupload-1.0上传组件使用实例,里面有代码和jar包, 复制,粘贴就可以使用
由于存储空间,对一般用户而言,就是用来操作存储文件的,所以这两天,特意看了一下windows下用servlet实现文件上传、下载和删除,下面是详细代码说明 上传: 用的是commons-fileupload-1.2.2.jar和commons-io-...
以前也做过上传,基本是是使用commons-fileupload组件,基本的步骤是使用servlet处理完上传之后,使用PrintWrite的对象实例输出显示内容,可以是直接输出内容,也可以是输出script进行操作如 代码如下:response....
文件上传是项目开发中最常见的功能。为了能上传文件,必须将表单的method设置为POST,...在2003年,Apache Software Foundation发布了开源的Commons FileUpload组件,其很快成为Servlet/JSP程序员上传文件的最佳选择。
// 实例化一个硬盘文件工厂,用来配置上传组件ServletFileUpload DiskFileItemFactory dfif = new DiskFileItemFactory(); dfif.setSizeThreshold(4096);// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于...