使用fileupload实现文件上传

来源:互联网 发布:儿童意外伤害数据 编辑:程序博客网 时间:2024/05/26 05:50
使用fileupload实现文件上传主要步骤
1、在http://commons.apache.org/下载commons-fileupload.jar和commons-io.jar包,将其导入到referenced libraries;
2、在写jsp界面的form表单设置ENCTYPE="multipart/form-data",method方法为“post”;
3、创建处理文件上传的servlet;
4、在webl-xml中进行上传文件保存地址和处理上传文件的servlet的配置。注意:进行上传文件保存地址必须存在。


相关代码如下:

界面代码:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head><title>文件上传界面</title>  </head>  <body background="images/back3.gif"><center>  <!-- ENCTYPE后面设置的一定是mutlipare/form-data,否则服务器无法识别上传的是文件 -->  <form ENCTYPE="multipart/form-data" method="post" action="FileUpload.do" name="uploadform">  <br>文件1:<input name="file1" size="40" type="file">  <br>文件2:<input name="file2" size="40" type="file">  <br>文件3:<input name="file3" size="40" type="file">  <br><input name="upload" type="submit" value="开始上传"/>  </form>  </center>  </body></html>



处理文件上传的servlet代码:
package cn.netjava.fileupload;import java.io.*;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;/** * 文件上传示列 * 本程序生成文件上传处理的Servlet * 接受上传页面的请求,将上传的文件保存到upLoadDir目录下 *应预建upLoadDir目录 * @author www.NetJava.cn * */public class FileUpLoad extends HttpServlet { /** * 无参构造器 */public FileUpLoad() {super();}/** * 接受客户端的请求 */public void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//得到servlet配置中的文件存放目录    String updoadFilePath=this.getInitParameter("updoadFilePath");    System.out.println("-------"+updoadFilePath);//是否上传成功boolean state = false;//用来引用上传成功的文件,以给客户端输出java.util.List<File> upokFile=new java.util.ArrayList<File>();try {// 创建一个基于磁盘文件的工厂DiskFileItemFactory factory = new DiskFileItemFactory();factory.setRepository(new File(updoadFilePath));factory.setSizeThreshold(10);// 创建一个文件处理器ServletFileUpload upload = new ServletFileUpload(factory);// 解析请求List items = upload.parseRequest(request);// 处理文件上传项Iterator iter = items.iterator();while (iter.hasNext()) {FileItem item = (FileItem) iter.next();if (item.isFormField()) {// 普通请求,可以接收请求中其它参数} else {//文件上传请求// 获得上传文件名String fileName = item.getName();System.out.println("文件全名为: "+fileName);fileName=fileName.substring(fileName.lastIndexOf("\\"));File temf= new File(updoadFilePath+ fileName);System.out.println("保存的路径为: "+temf.getAbsolutePath());//将文件写入服务器上的目录item.write(temf);upokFile.add(temf);state= true;}}} catch (Exception ef) {ef.printStackTrace();}response.setContentType("text/html; charset=GBK");PrintWriter out = response.getWriter();out.println("<html>");out.println("<head>");out.println("<title>欢迎光临netjava 文件上传</title>");out.println("</head>");if(state){out.println("<h1><font color='blue' size='20'>感谢您的支持!</font></h1>");out.println("<h2><font color='red'>文件上传成功: </font></h2>");//将文件链结打印到客户端供其下载while(upokFile.size()>0){File upFile=upokFile.remove(0);String paht=upFile.getParentFile().getName() +"/"+upFile.getName();out.println("<br><a href=\""+paht+"\">"+upFile.getName()+"</a>");}out.println("</dir>");out.println("</body>");out.println("</html>");out.flush();out.close();} else {out.println("<h2><font color='red'>文件上传失败 :(</font></h2>");out.println("</div>");out.println("</body>");out.println("</html>");out.flush();out.close();}}/** * 销毁servlet */public void destroy() {super.destroy(); // Just puts "destroy" string in log// Put your code here}/** * 初始化servlet     */public void init() throws ServletException {// Put your code here}}


在web—xml下进行相关配置

0 0