欢迎来到51自学网!

51自学网

当前位置: 主页 > 脚本专题 >

java组件commons-fileupload实现文件上传

时间:2018-07-27 16:16来源:网络整理 作者:51自学网
一、所需要的包: 1、commons-fileupload-1.2.1.jar: 下载地址 2、commons-io-1.4.jar: 下载地址 二、注意事项: form表单里面要加上enctype="multipart/form-data" 三、代码示例 1、jsp代码: %@ page langua

一、所需要的包:
1、commons-fileupload-1.2.1.jar:
下载地址

2、commons-io-1.4.jar:
下载地址

二、注意事项:
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"> </td> </tr> <tr> <td>年龄</td> <td> <input type="text"> </td> </tr> <tr> <td>照片</td> <td> <input type="file"> </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

(责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容