package com.mvc.interceptor;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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;
import org.apache.commons.io.output.DeferredFileOutputStream;
import com.mvc.filter.MVCHttpParams;
public class UploadInterceptor extends MVCInterceptorAdapter{
@Override
public String invoke(MVCHttpParams params) {
HttpServletRequest request=params.getRequest();
String contexttype=request.getContentType();
if(!contexttype.equals("application/x-www-form-urlencoded")){
HttpServletResponse response=params.getResponse();
HttpSession session=request.getSession();
response.setCharacterEncoding("UTF-8");
DiskFileItemFactory diskfactory=new DiskFileItemFactory();
diskfactory.setSizeThreshold(4096);
File f=new File(request.getSession().getServletContext().getRealPath("/")+"temp");
if(!f.exists()){
f.mkdir();
}
diskfactory.setRepository(f);
ServletFileUpload sfu=new ServletFileUpload();
sfu.setFileItemFactory(diskfactory);
sfu.setFileSizeMax(3*1024*1024);
try {
List<FileItem> filelist=sfu.parseRequest(request);
for(FileItem item:filelist){
if(item.isFormField()){
String name=item.getFieldName();
request.setAttribute(name, item.getString());
if(null==session.getAttribute("UPLOADREQUEST")){
session.setAttribute("UPLOADREQUEST", "true");
}
continue;
}else{
session.setAttribute("FILEITEM", item);
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
@Override
public String doAfter(MVCHttpParams params) {
HttpSession session=params.getRequest().getSession();
if(session.getAttribute("FILEITEM")!=null){
FileItem item=(FileItem)session.getAttribute("FILEITEM");
DeferredFileOutputStream dfos=null;
try {
dfos = (DeferredFileOutputStream)item.getOutputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
File file=dfos.getFile();
file.delete();
session.removeAttribute("FILEITEM");
session.removeAttribute("UPLOADREQUEST");
}
return null;
}
}
分享到:
相关推荐
都是我从不同网站上辛苦下下来了,整合在一起了,很多关于文件上传过滤文件格式多文件上传的代码资料和完整项目,包括uploadify fancyupload SwfUpload等不同的方法,需要对你们有帮助。
Struts2 上传文件 过滤文件类型 过滤大小
基于struts2的文件上传+过滤器 可以动态的控制文件的类型和文件大小
jquery过滤上传文件的类型和限制文件的大小,非常实用
struts2中文件上传过滤codeFilter
项目上传git过滤文件demo文件
简单的java文件过滤,改写特定字符串,ps:主要目的用于个人程序存储 个人笔记链接http://blog.sina.com.cn/s/blog_70356c200100x08p.html
这是一个struts2实例 涉及的技术包括: 1.自定义过滤器 2.文件上传下载 3.登录功能 等等
这是一套非常有用的文件的上传与下载技术,不会的可以去下载去看一下哦呵呵
有监听和过滤器,文件上传的servlet的程序
C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传 C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传
基于struts2的用数组接受多个文件上传+过滤器 用数组接受的同时多文件上传
Layui实现文件上传进度条 Layui是一个优秀的前端框架,它提供了很多实用的UI组件和功能之一就是进度条组件。今天我们将探讨如何使用Layui实现文件上传进度条。 进度条组件 Layui的进度条组件是一个轻量级的UI组件...
jquery中对上传文件格式过滤的方法,需要的朋友参考下。
任意文件上传 任意文件上传 1、进入环境 打开靶机,进入一个文件上传界面,如右图所示。 2、测试上传功能 选择一个正常的图片文件上传,提示上传成功,路径保存为:uploads/5bdb0d93dc794.jpg 任意文件上传 2、测试...
支持同时上传多个文件,和设置文件过滤 绑定进度条和用于显示进度信息的Text控件
2. 支持任意大文件上传 3. 支持ASP,JSP,C#,VB.NET,PHP等多种后台开发语言,与第三方系统整合方便。 4. 文件上传,可以一次按顺序上传多个超大文件。 5. 组件完全采用多线程方式上传,达到更高性能。 6. 支持进度事件...
php 文件上传 前后台过滤 php面向过程 和面向对象的上传和下载类
Silverlight多文件上传 v4.2源码 程序介绍: 提供了几种上传模式,单文件,多文件,集成js文件的方式上传文件。 将Silverlight上传工具集成到网页文件中需要进行简单的配置,看 如下各项参数作用。 配置: ...
Vue.js文件上传组件,多文件上传,上传目录,拖动上传,拖动目录,同时上传多个文件,html4(IE 9),`PUT`方法,自定义过滤器