`
mimang2007110
  • 浏览: 237206 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

文件上传过滤类

 
阅读更多
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;
	}

	
}

 

分享到:
评论

相关推荐

    基于struts2的文件上传+过滤器

    本篇文章将详细介绍如何在Struts2中实现文件上传功能以及使用过滤器进行文件类型的过滤。 首先,理解Struts2文件上传的基本原理。Struts2提供了`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器来...

    Struts2 上传文件(带过滤文件类型和大小)

    总结,Struts2提供了方便的文件上传功能,但需要注意过滤文件类型和大小以确保系统安全和性能。通过配置、校验和处理逻辑,我们可以实现一个完整的文件上传功能,同时确保上传的文件既符合格式要求,又不超过设定的...

    简单java文件过滤

    在Java编程中,文件过滤是一项常见的任务,尤其在处理大量数据或者进行文件操作时。这里的“简单java文件过滤”指的是通过编程方式筛选出满足特定条件的文件,例如根据文件名、扩展名或文件内容进行过滤,并对这些...

    上传文件过滤文件格式多文件上传

    都是我从不同网站上辛苦下下来了,整合在一起了,很多关于文件上传过滤文件格式多文件上传的代码资料和完整项目,包括uploadify fancyupload SwfUpload等不同的方法,需要对你们有帮助。

    文件的上传与下载过滤操作技术(java jsp )

    以上就是关于"文件的上传与下载过滤操作技术(java jsp )"的详细解析,涵盖了Java JSP实现文件上传下载、过滤器的使用以及登录验证的关键技术点。理解并掌握这些知识点,能帮助开发者构建安全、高效的Web应用。

    struts2中文件上传过滤codeFilter

    `codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止恶意用户上传不安全的文件类型,例如脚本文件,或者限制文件大小以保护服务器资源。以下是对...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...

    jquery过滤上传文件的类型和限制文件的大小

    ### 使用jQuery过滤上传文件的类型和限制文件大小 在Web开发中,经常需要处理用户上传文件的功能。为了确保系统的安全性和提高用户体验,开发者通常需要对上传的文件进行一系列的检查,比如验证文件类型是否符合...

    项目上传git过滤文件demo文件

    项目上传git过滤文件demo文件

    有监听和过滤器,文件上传的servlet的程序

    以上代码示例展示了如何使用Servlet、监听器和过滤器来处理文件上传。在实际项目中,还需要考虑错误处理、安全性(如防止文件注入攻击)、性能优化(如使用流处理大文件)等方面的问题。通过这些组件的组合,你可以...

    基于struts2的用数组接受多个文件上传+过滤器

    在本教程中,我们将探讨如何利用Struts2框架,结合数组来实现多文件上传,并利用过滤器进行预处理,确保上传的安全性。 首先,让我们了解一下多文件上传的基本概念。在传统的HTTP请求中,每个请求只能携带一个文件...

    无组件文件上传类

    在实际开发中,我们需要对上传的文件进行检查和过滤,确保它们符合安全标准,防止恶意文件上传。例如,可以检查文件扩展名,限制上传文件的大小,以及使用随机或时间戳命名新文件以避免覆盖现有文件。 4. **错误...

    Vuejs文件上传组件多文件上传

    在Vue.js中,实现文件上传功能是常见的需求,尤其是在构建交互丰富的Web应用时。本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 ...

    C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传

    C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传 C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传

    struts03:拦截器、过滤器与拦截器的区别、文件上传

    本文将深入探讨Struts框架中的拦截器(Interceptor)以及它与过滤器(Filter)的区别,并结合文件上传功能进行讲解。 1. 拦截器与过滤器的概念 - **拦截器**:在Struts2框架中,拦截器是基于AOP(面向切面编程)的...

    flash 实现的多文件上传

    2. **FileReference对象**:在ActionScript 3中,FileReference是处理文件上传的核心类。它允许用户选择本地文件,读取文件内容,以及将文件上传到服务器。通过创建FileReference对象数组,可以实现多文件上传。 3....

    Android文件上传,文件选择器,多选

    在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...

    SSM整合 配置文件 文件上传 过滤器 拦截器 连接数据库

    **文件上传**:在SpringMVC中,可以通过MultipartFile类型处理文件上传。需要配置MultipartResolver来解析文件上传请求,如CommonsMultipartResolver,并设置允许的最大文件大小和临时存储路径。 **过滤器(Filter...

    文件上传jar文件

    在IT行业中,文件上传是一项常见的功能,特别是在web应用中,用户可能需要上传各种类型的文件,如文档、图片或数据文件。"文件上传jar文件"这个标题指出,我们讨论的是一个包含用于实现文件上传功能的Java库的压缩包...

    文件上传(文件上传)

    文件上传是Web应用程序中常见的一种功能,允许用户将本地计算机上的文件传输到服务器。这一过程在许多场景下都是至关重要的,比如在线文档编辑、图片分享、数据备份等。理解文件上传的工作原理及其在IT领域的应用,...

Global site tag (gtag.js) - Google Analytics