首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

commons-fileupload兑现文件上传(1)

2012-07-27 
commons-fileupload实现文件上传(1)Apache Commons fileUpload实现文件上传?所使用的fileUpload版本为1.2,

commons-fileupload实现文件上传(1)

Apache Commons fileUpload实现文件上传

?

所使用的fileUpload版本为1.2,环境为Eclipse3.3+MyEclipse6.0。FileUpload 是基于 Commons IO的,所以在进入项目前先确定Commons IO的jar包(本文使用commons-io-1.3.2.jar)在WEB-INF\lib下。此文作示例工程可在文章最后的附件中下载。最简单的例子,通过ServletFileUpload静态类来解析Request,工厂类FileItemFactory会对mulipart类的表单中的所有字段进行处理,不只是file字段。getName()得到文件名,getString()得到表单数据内容,isFormField()可判断是否为普通的表单项。<html><head>??? <meta http-equiv="Content-Type" content="text/html; charset=GB18030">??? <title>File upload</title></head><body>??? <form name="myform" action="demo1.jsp" method="post"?????? enctype="multipart/form-data">?????? Your name: <br>?????? <input type="text" name="name" size="15"><br>?????? File:<br>?????? <input type="file" name="myfile"><br>?????? <br>?????? <input type="submit" name="submit" value="Commit">??? </form></body></html><%@ page language="java" contentType="text/html; charset=GB18030"??? pageEncoding="GB18030"%><%@ page import="org.apache.commons.fileupload.*"%><%@ page import="org.apache.commons.fileupload.servlet.*"%><%@ page import="org.apache.commons.fileupload.disk.*"%><%@ page import="java.util.*"%>?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%??? boolean isMultipart = ServletFileUpload.isMultipartContent(request);//检查输入请求是否为multipart表单数据。??? if (isMultipart == true) {?????? FileItemFactory factory = new DiskFileItemFactory();//为该请求创建一个DiskFileItemFactory对象,通过它来解析请求。执行解析后,所有的表单项目都保存在一个List中。?????? ServletFileUpload upload = new ServletFileUpload(factory);?????? List<FileItem> items = upload.parseRequest(request);?????? Iterator<FileItem> itr = items.iterator();?????? while (itr.hasNext()) {?????????? FileItem item = (FileItem) itr.next();?????????? //检查当前项目是普通表单项目还是上传文件。?????????? if (item.isFormField()) {//如果是普通表单项目,显示表单内容。?????? String fieldName = item.getFieldName();?????? if (fieldName.equals("name")) //对应demo1.html中type="text" name="name"?????????? out.print("the field name is" + item.getString());//显示表单内容。?????? out.print("<br>");?????????? } else {//如果是上传文件,显示文件名。?????? out.print("the upload file name is" + item.getName());?????? out.print("<br>");?????????? }?????? }??? } else {?????? out.print("the enctype must be multipart/form-data");??? }%><html><head>??? <meta http-equiv="Content-Type" content="text/html; charset=GB18030">??? <title>File upload</title></head><body></body>上传两个文件到指定的目录。<html><head>??? <meta http-equiv="Content-Type" content="text/html; charset=GB18030">??? <title>File upload</title></head><body>??? <form name="myform" action="demo2.jsp" method="post"?????? enctype="multipart/form-data">?????? File1:<br>?????? <input type="file" name="myfile"><br>?????? File2:<br>?????? <input type="file" name="myfile"><br>?????? <br>?????? <input type="submit" name="submit" value="Commit">??? </form></body><%@ page language="java" contentType="text/html; charset=GB18030"??? pageEncoding="GB18030"%><%@ page import="org.apache.commons.fileupload.*"%><%@ page import="org.apache.commons.fileupload.servlet.*"%><%@ page import="org.apache.commons.fileupload.disk.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%>?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%String uploadPath="D:\\temp";? boolean isMultipart = ServletFileUpload.isMultipartContent(request);? if(isMultipart==true){??? ? try{??? ??? FileItemFactory factory = new DiskFileItemFactory();??? ??? ServletFileUpload upload = new ServletFileUpload(factory);??? ??? List<FileItem> items = upload.parseRequest(request);//得到所有的文件??? ?? Iterator<FileItem> itr = items.iterator();??? ??? while(itr.hasNext()){//依次处理每个文件?????? ? FileItem item=(FileItem)itr.next();?????? ? String fileName=item.getName();//获得文件名,包括路径?????? ? if(fileName!=null){?????????? ? File fullFile=new File(item.getName());?????????? ? File savedFile=new File(uploadPath,fullFile.getName());?????????? ? item.write(savedFile);?????? ? }??? ??? }??? ??? out.print("upload succeed");??? ? }??? ? catch(Exception e){?????? ? e.printStackTrace();??? ? }? }? else{??? ? out.println("the enctype must be multipart/form-data");? }%><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>File upload</title></head><body></body>此时,在"D:\temp"下可以看到你上传的两个文件。上传一个文件到指定的目录,并限定文件大小。<html><head>??? <meta http-equiv="Content-Type" content="text/html; charset=GB18030">??? <title>File upload</title></head><body>??? <form name="myform" action="demo3.jsp" method="post"?????? enctype="multipart/form-data">?????? File:<br>?????? <input type="file" name="myfile"><br>?????? <br>?????? <input type="submit" name="submit" value="Commit">??? </form></body></html><%@ page language="java" contentType="text/html; charset=GB18030"??? pageEncoding="GB18030"%><%@ page import="org.apache.commons.fileupload.*"%><%@ page import="org.apache.commons.fileupload.servlet.*"%><%@ page import="org.apache.commons.fileupload.disk.*"%><%@ page import="java.util.*"%><%@ page import="java.io.*"%>?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%??? File uploadPath = new File("D:\\temp");//上传文件目录??? if (!uploadPath.exists()) {?????? uploadPath.mkdirs();??? }??? // 临时文件目录??? File tempPathFile = new File("d:\\temp\\buffer\");??? if (!tempPathFile.exists()) {?????? tempPathFile.mkdirs();??? }??? try {?????? // Create a factory for disk-based file items?????? DiskFileItemFactory factory = new DiskFileItemFactory();??????? // Set factory constraints?????? factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb?????? factory.setRepository(tempPathFile);//设置缓冲区目录??????? // Create a new file upload handler?????? ServletFileUpload upload = new ServletFileUpload(factory);??????? // Set overall request size constraint?????? upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB??????? List<FileItem> items = upload.parseRequest(request);//得到所有的文件?????? Iterator<FileItem> i = items.iterator();?????? while (i.hasNext()) {?????????? FileItem fi = (FileItem) i.next();?????????? String fileName = fi.getName();?????????? if (fileName != null) {?????? File fullFile = new File(fi.getName());?????? File savedFile = new File(uploadPath, fullFile????????????? .getName());?????? fi.write(savedFile);?????????? }?????? }?????? out.print("upload succeed");??? } catch (Exception e) {?????? e.printStackTrace();??? }%><html><head><meta http-equiv="Content-Type" content="text/html; charset=GB18030"><title>File upload</title></head><body></body>利用Servlet来实现文件上传。package com.zj.sample;?import java.io.File;import java.io.IOException;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.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;?@SuppressWarnings("serial")public class Upload extends HttpServlet {??? private String uploadPath = "D:\\temp"; // 上传文件的目录??? private String tempPath = "d:\\temp\\buffer\"; // 临时文件目录??? File tempPathFile;???? @SuppressWarnings("unchecked")??? public void doPost(HttpServletRequest request, HttpServletResponse response)?????????? throws IOException, ServletException {?????? try {?????????? // Create a factory for disk-based file items?????????? DiskFileItemFactory factory = new DiskFileItemFactory();??????????? // Set factory constraints?????????? factory.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb?????????? factory.setRepository(tempPathFile);// 设置缓冲区目录??????????? // Create a new file upload handler?????????? ServletFileUpload upload = new ServletFileUpload(factory);??????????? // Set overall request size constraint?????????? upload.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB??????????? List<FileItem> items = upload.parseRequest(request);// 得到所有的文件?????????? Iterator<FileItem> i = items.iterator();?????????? while (i.hasNext()) {????????????? FileItem fi = (FileItem) i.next();????????????? String fileName = fi.getName();????????????? if (fileName != null) {????????????????? File fullFile = new File(fi.getName());????????????????? File savedFile = new File(uploadPath, fullFile.getName());????????????????? fi.write(savedFile);????????????? }?????????? }?????????? System.out.print("upload succeed");?????? } catch (Exception e) {?????????? // 可以跳转出错页面?????????? e.printStackTrace();?????? }??? }???? public void init() throws ServletException {?????? File uploadFile = new File(uploadPath);?????? if (!uploadFile.exists()) {?????????? uploadFile.mkdirs();?????? }?????? File tempPathFile = new File(tempPath);??? ??? if (!tempPathFile.exists()) {?????????? tempPathFile.mkdirs();?????? }??? }<html><head>??? <meta http-equiv="Content-Type" content="text/html; charset=GB18030">??? <title>File upload</title></head><body>??? <form name="myform" action="fileupload" method="post"?????? enctype="multipart/form-data">?????? File:<br>?????? <input type="file" name="myfile"><br>?????? <br>?????? <input type="submit" name="submit" value="Commit">??? </form></body><servlet>??? <servlet-name>Upload</servlet-name>??? <servlet-class>com.zj.sample.Upload</servlet-class></servlet>?<servlet-mapping>??? <servlet-name>Upload</servlet-name>??? <url-pattern>/fileupload</url-pattern></servlet-mapping>

本文出自 “子 孑” 博客,请务必保留此出处http://zhangjunhd.blog.51cto.com/113473/18331

热点排行