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提供了`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器来...
总结,Struts2提供了方便的文件上传功能,但需要注意过滤文件类型和大小以确保系统安全和性能。通过配置、校验和处理逻辑,我们可以实现一个完整的文件上传功能,同时确保上传的文件既符合格式要求,又不超过设定的...
在Java编程中,文件过滤是一项常见的任务,尤其在处理大量数据或者进行文件操作时。这里的“简单java文件过滤”指的是通过编程方式筛选出满足特定条件的文件,例如根据文件名、扩展名或文件内容进行过滤,并对这些...
都是我从不同网站上辛苦下下来了,整合在一起了,很多关于文件上传过滤文件格式多文件上传的代码资料和完整项目,包括uploadify fancyupload SwfUpload等不同的方法,需要对你们有帮助。
以上就是关于"文件的上传与下载过滤操作技术(java jsp )"的详细解析,涵盖了Java JSP实现文件上传下载、过滤器的使用以及登录验证的关键技术点。理解并掌握这些知识点,能帮助开发者构建安全、高效的Web应用。
`codeFilter`在此上下文中通常是指一个自定义过滤器,用于在文件上传过程中进行额外的安全检查或处理。这个过滤器可以防止恶意用户上传不安全的文件类型,例如脚本文件,或者限制文件大小以保护服务器资源。以下是对...
本实例展示了如何在Struts2环境中实现几个关键功能:自定义过滤器、文件上传下载以及用户登录功能。这些功能是任何Web应用程序的基础组成部分,理解和掌握它们对于提升Web开发技能至关重要。 首先,我们来探讨...
### 使用jQuery过滤上传文件的类型和限制文件大小 在Web开发中,经常需要处理用户上传文件的功能。为了确保系统的安全性和提高用户体验,开发者通常需要对上传的文件进行一系列的检查,比如验证文件类型是否符合...
项目上传git过滤文件demo文件
以上代码示例展示了如何使用Servlet、监听器和过滤器来处理文件上传。在实际项目中,还需要考虑错误处理、安全性(如防止文件注入攻击)、性能优化(如使用流处理大文件)等方面的问题。通过这些组件的组合,你可以...
在本教程中,我们将探讨如何利用Struts2框架,结合数组来实现多文件上传,并利用过滤器进行预处理,确保上传的安全性。 首先,让我们了解一下多文件上传的基本概念。在传统的HTTP请求中,每个请求只能携带一个文件...
在实际开发中,我们需要对上传的文件进行检查和过滤,确保它们符合安全标准,防止恶意文件上传。例如,可以检查文件扩展名,限制上传文件的大小,以及使用随机或时间戳命名新文件以避免覆盖现有文件。 4. **错误...
在Vue.js中,实现文件上传功能是常见的需求,尤其是在构建交互丰富的Web应用时。本篇将详细介绍Vue.js中实现多文件上传的相关知识点,以及如何使用`vue-upload-component`这个开源组件来帮助我们实现这一功能。 ...
C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传 C#实现FTP上传、下载、删除文件,扫描(正则过滤)指定文件并上传
本文将深入探讨Struts框架中的拦截器(Interceptor)以及它与过滤器(Filter)的区别,并结合文件上传功能进行讲解。 1. 拦截器与过滤器的概念 - **拦截器**:在Struts2框架中,拦截器是基于AOP(面向切面编程)的...
2. **FileReference对象**:在ActionScript 3中,FileReference是处理文件上传的核心类。它允许用户选择本地文件,读取文件内容,以及将文件上传到服务器。通过创建FileReference对象数组,可以实现多文件上传。 3....
在Android应用开发中,文件上传和文件选择器是常见的功能需求。用户可能需要从设备存储中选择一个或多个文件,例如图片、文档或音频文件,然后上传到服务器或进行其他操作。本文将深入探讨如何在Android平台上实现...
**文件上传**:在SpringMVC中,可以通过MultipartFile类型处理文件上传。需要配置MultipartResolver来解析文件上传请求,如CommonsMultipartResolver,并设置允许的最大文件大小和临时存储路径。 **过滤器(Filter...
在IT行业中,文件上传是一项常见的功能,特别是在web应用中,用户可能需要上传各种类型的文件,如文档、图片或数据文件。"文件上传jar文件"这个标题指出,我们讨论的是一个包含用于实现文件上传功能的Java库的压缩包...
文件上传是Web应用程序中常见的一种功能,允许用户将本地计算机上的文件传输到服务器。这一过程在许多场景下都是至关重要的,比如在线文档编辑、图片分享、数据备份等。理解文件上传的工作原理及其在IT领域的应用,...