使用fileupload实现文件上传

使用fileupload实现文件上传主要步骤
1、在[url]http://commons.apache.org/[/url]下载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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值