servlet 实现多个文件上传,完整代码:
package com.commpim.performance;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
/**
* Servlet implementation class for Servlet: UploadFile2Servlet
*
*/
public class UploadFilet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
//用于存放上传文件的目录
private String uploadPath="E:\\upFile\\";
private File tempPath=new File("E:\\upFile\\temp");
/**
* 初始化Servlet,确保需要使用的目录都被建立<br>
* @throws javax.servlet.ServletException
*/
@Override
public void init() throws ServletException{
if(!new File(uploadPath).isDirectory())
new File(uploadPath).mkdir();
if(!tempPath.isDirectory())
tempPath.mkdir();
}
/**
* 销毁Servelt
*/
public void destory(){
super.destroy();
}
/**
* @param request
* @param response
* @throws javax.servlet.ServletException
* @throws java.io.IOException
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//创建一个上传项目工厂,并设置其缓存数据大小和临时文件保存位置
DiskFileItemFactory factory=new DiskFileItemFactory();
factory.setSizeThreshold(4096);
factory.setRepository(tempPath);
//使用项目工厂创建一个ServletFileUpload对象,用于解析文件上传请求
//并设置可以上传的文件的最大字节数,超过会抛出异常
ServletFileUpload upload=new ServletFileUpload(factory);
upload.setSizeMax(1000000);
upload.setHeaderEncoding("utf-8");
List fileItems=null;
try{
//开始读取上传信息
fileItems=upload.parseRequest(request);
//依次处理每一个上传的文件
Iterator itor=fileItems.iterator();
//正则匹配,过滤路径取文件名
String regExp=".+\\\\(.+)$";
//过滤文件类型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p=Pattern.compile(regExp);
while(itor.hasNext()){
FileItem item=(FileItem)itor.next();
//忽略其他不是文件域的所有其他表单信息
if(!item.isFormField()){
String name=item.getName();
long size=item.getSize();
if((name==null||name.equals(""))&&size==0)
continue;
Matcher m=p.matcher(name);
boolean result=m.find();
//如果是允许上传的文件类型就执行上传操作
if(result){
for(int temp=0;temp<errorType.length;temp++){
if(m.group(1).endsWith(errorType[temp])){
throw new IOException(name+":wrong type");
}
}
try{
//保存文件到指定的目录,如果是保存到数据库,改写这里
item.write(new File(uploadPath,m.group(1)));
}catch(Exception e){
}
}else{
throw new IOException("fail to upload");
}
}
}
}catch(IOException e){
e.printStackTrace();
}catch(FileUploadException e1){
e1.printStackTrace();
}
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "cliff";
}
// </editor-fold>
}
html 代码:
<html>
<body>
<form name="fileform" method="post" action="UploadFilet"
style="display: none; font-weight: bold;"
enctype="multipart/form-data">
<div align="center">
<table width="421" border="1" bordercolor="#C5D6FC"
id="urltable">
<tr>
<td width="421">
<div align="center">Upload Files</div>
</td>
</tr>
<tr>
<td><input type="file" name="url_1" size="62" /></td>
</tr>
<tr>
<td><input name="url_2" type="file" size="62" /></td>
</tr>
</table>
</div>
<p align="center"><input type="submit" name="Submit"
value="Submit" /></p>
</form>
</body>
</html>
参考
http://apps.hi.baidu.com/share/detail/23055527
分享到:
相关推荐
主要为大家详细介绍了Servlet实现文件上传功能,还可以实现Servlet多文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
使用mvc模式设计,jsp+servlet开发,同时可以上传两个文件,也可以自己修改下代码上传多个文件,在Servlet中使用开源fileupload包实现文件上传功能
【摘要】:该文介绍了在B/S模式下,通过JSP/Servlet技术实现文件上传的方法。...笔者主要介绍用JSP方式和Servlet方式实现的两个代码简短又高效率的文件上传功能。在此基础上,可以对文件上传功能进行进一步的完善......
纯jsp,servlet版的文件上传与下载.同时可以上传两个文件,也可以自己修改下代码上传多个文件,这是本人的自己的代码,不是为了赚点积分,还真有点舍不得上传。工程名写成了了nostruts,是为了区分struts,用jsp写的
一、Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip: 点击打开链接 2) commons-io-2.3-bin.zip: 点击打开链接 接着把这两个jar包放到 lib文件夹下: 二:...
Uploadify多文件上传+servlet 一个简单的例子
使用 jsp和servlet ,完成一个表单内的 普通表单和文件上传功能
一个完整的Servlet文件上传、下载及缩略图的生成的代码,可以直接在eclipse中运行,本程序适合多包上传和下载,对于图片类文件可以生成缩略图,供大家参考,改程序已经过测试。
servlet3.0将上传的文件保存在Part实例中,可以通过request对象根据上传的表单控件的name获取对应的part对象,同时也支持多个文件上传 通过part对象可直接得到文件的输入流inputStream,在通过outputStream写到本地...
两个文件上传到指定的文件里,如何处理输入输出流。借用了Apache的commons-fileupload-1.2.1.jar来完成文件上传。
主要介绍了Servlet实现文件上传的三种方法总结的相关资料,这里提供三种实例,帮助大家理解这部分内容,需要的朋友可以参考下
NULL 博文链接:https://dreamoftch.iteye.com/blog/1860289
第一步:编写可以进行多文件上传的一个jsp页面(index.jsp和index.js) 第二步:编写一个存储文件属性的bean(FileUploadBean.java) 第三步:编写一个可以用来设置 扩展名、单文件大小、总文件大小的配置文件(app1...
这个是我仿照别人写的一个flash多文件上传,用flash cs4 这个版本写的,因为要用到as3.0,上传一个完整的哈,希望对大家有帮助(实现基本的功能哈,上传验证条件仿照我的自己加就可以)
swf+java+servlet多文件上传单个进度条显示,简单实用,缺点项目中上传多个文件使用一个进度条显示传输进度
swfupload实现多文件上传Demo,用servlet实现上传文件(SWFUpload是一个客户端文件上传工具,最初由Vinterwebb.se开发,它通过整合Flash与JavaScript技术为WEB开发者提供了一个具有丰富功能继而超越传统标签的文件...
实现多文件上传,jsp java代码非常全,可直接运行,放心下载
在网上一个地方下的,地址忘记了。js+servlet 动态上传, 自己测试过在html页面上,可以的。谢谢那个自己做的高手!!
多文件上传,并显示每一个的进度。前端使用的easyui,amazeui,js等。后台使用springmcv,写的简单例子。当然使用atruts和servlet也同样可以。