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

上传文件过滤类

    博客分类:
  • java
 
阅读更多
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 文件上传基础** 在Struts2中,文件上传主要依赖于`struts2-core`库中的`...

    简单java文件过滤

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

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

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

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

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

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

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

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

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

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

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

    struts2中文件上传过滤codeFilter

    在Struts2的Action类中,可以定义一个字段,类型为`java.io.File`或`org.apache.struts2.dispatcher.multipart.FileItem`,Struts2会自动将上传的文件绑定到这些字段上。 **2. 配置文件上传** 在`struts.xml`配置...

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

    在文件上传中,我们可以使用过滤器来验证请求、修改上传参数或进行权限控制。例如,一个`AuthenticationFilter`可以检查用户是否已登录,只有登录用户才能上传文件: ```java @WebFilter("/upload/*") public class...

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

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

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

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

    java上传文件jar

    它提供了许多实用工具类,简化了文件读写、流操作、文件比较、文件过滤等任务。例如,`FileUtils`类提供了一系列静态方法,可以方便地进行文件和目录的复制、移动、删除等操作。`IOUtils`类则提供了对流进行读取、...

    无组件文件上传类

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

    uniapp实现移动端上传文件功能

    在移动应用开发中,文件上传是一项常见的功能,尤其在社交、云存储以及各种服务类应用中,用户常常需要上传图片、文档等数据。uniAPP,作为一个跨端开发框架,为开发者提供了便捷的方式来实现移动端的文件上传功能。...

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

    3. 文件过滤:为了限制用户只能选择特定类型的文件,如图片或文档,可以使用MIME类型过滤。在`Intent.createChooser()`方法中添加`IntentFilter`,只显示指定MIME类型的文件。 二、文件上传 1. 获取选定文件:在...

    Java实现简单文件过滤器功能

    Java实现简单文件过滤器功能 在本文中,我们将探讨如何使用Java语言实现一个简单的文件过滤器功能。这个功能可以遍历文件夹下的所有子文件夹,并根据指定的文件后缀进行筛选。 文件过滤器的实现思路 要实现文件...

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

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

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

    - 自定义过滤器可以方便地控制上传的文件类型和大小。 - 显示文件上传进度,提升用户体验。 - 兼容HTML4,包括IE 9等较旧的浏览器。 - 丰富的API和事件,便于与其他Vue组件交互。 使用`vue-upload-component`的步骤...

    java非法字符过滤器

    考虑以下示例代码,我们初始化了一个`Test`类的对象`t`,并添加了几组非法字符(如"TMD"、"TNND"、"NND")。然后,我们使用`filter`方法处理了一段包含这些非法字符的文本。输出结果表明,所有被标记为非法的字符均...

Global site tag (gtag.js) - Google Analytics