使用fileupload实现文件上传

使用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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值