JSP上传文件方法

支持多文件上传
所需jar包
1. commons-FileUpload 1.2 包
2. commons-IO 1.3.1 包
3. Commons-BeanUtils 1.8 包

-----------------------------------upload.jsp----------------------------------- 

<html>  
<head>  
<title>Jsp+Servlet upload file</title>  
</head>  
<body>  
  <form action="uploadServlet" method="POST" enctype="multipart/form-data">  
    <input type ="file" name="file1"/><br/>  
    <input type ="file" name="file2"/><br/>  
    <input type="submit" value="Submit" /><br/>  
    <input type="reset" />  
  </form>  
</body>  
</html>

 
--------------------------------------uploadServlet.java--------------------------------

package lee.util; 

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.commons.fileupload.FileItemIterator; 
import org.apache.commons.fileupload.FileItemStream; 
import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

/** 
* <p>Title:文件上传(支持多文件上传)</p> 
* <p>Description>:FileUpLoad.java</p> 
* <p>Create Time:Nov 3, 2010 3:22:21 PM</p> 
* <p>@version: 5.0</p> 
* <p>@author: LiWeichao</p> 
*/ 
public class UploadServlet extends HttpServlet { 

private static final Log log = LogFactory.getLog(UploadServlet.class); 

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException { 
this.doPost(req, resp); 
} 

@Override 
protected void doPost(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException { 
try { 
String fileName="";//上传到服务器的文件名 
    String savePath = this.getServletContext().getRealPath("/")+"UploadFiles\\"; 
    File saveDir = new File(savePath);   
    if(!saveDir.isDirectory())//目录不存在则创建相应目录 
        saveDir.mkdir();   
if (ServletFileUpload.isMultipartContent(request)) { 
DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象 
dff.setSizeThreshold(1024000);// 指定在内存中缓存数据大小,单位为byte 
ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象 
sfu.setFileSizeMax(5000000);// 指定单个上传文件的最大尺寸(单个文件大小不超过5M) 
sfu.setSizeMax(20000000);// 指定一次上传多个文件的总尺寸(总文件大小不超过20M) 
FileItemIterator fii = sfu.getItemIterator(request);// 解析request 
// 请求,并返回FileItemIterator集合 
while (fii.hasNext()) { 
FileItemStream fis = fii.next();// 从集合中获得一个文件流 
if (!fis.isFormField() && fis.getName().length() > 0) {// 过滤掉表单中非文件域 
// 根据系统时间生成上传文件的文件名 避免重复和中文乱码 
fileName = fis.getName().trim(); 
fileName=System.currentTimeMillis()+fileName.substring(fileName.lastIndexOf(".")); 
//获取文件写入流 
InputStream stream=fis.openStream(); 
//创建输出流 
OutputStream bos=new FileOutputStream(savePath+fileName); 
int bytesRead = 0; 
byte[] buffer = new byte[8192]; 
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1){ 
bos.write(buffer, 0, bytesRead);//将文件写入服务器 
} 
bos.close(); 
stream.close(); 
} 
} 
response.getWriter().println("File upload successfully!!!");// 终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗 
} 
} catch (Exception e) { 
log.error("#ERROR#:上传附件发生错误,请检查!",e); 
e.printStackTrace(); 
} 

} 
} 

 

-----------------------------------web.xml----------------------------------- 
         

<servlet> 
<servlet-name>uploadServlet</servlet-name> 
<servlet-class>lee.util.UploadServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>uploadServlet</servlet-name> 
<url-pattern>/uploadServlet</url-pattern> 
</servlet-mapping>

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值