Struts1.x多文件上传问题
最近有个项目要用Struts1.x来做多文件上传,就是用户可以在前台动态添加任意多个文件,然后上传到服务器上。这里文件个数不定,所有没有定义到ActionForm里。于是这时候想到了Apache的FileUpload组件,但是这个组件需要通过解析HttpServletRequest对象来获取所有上传的文件对象。而通过Struts1.x的所有request都被包装成MultipartRequestWrapper,此时再在Action里再来解析request对象就不能获取到上传的FileItem对象。查看了以下Struts1.x的原码,发现,其实我们可以有一种work around的方法来获取FileItem对象,见如下方法
throws GuiException ...{
Map<String, FileItem> map = new HashMap<String, FileItem>();
try ...{
Hashtable ht = form.getMultipartRequestHandler().getFileElements();
Iterator it = ht.keySet().iterator();
while( it.hasNext() ) ...{
Object obj = ht.get(it.next());
Field field = obj.getClass().getDeclaredField("fileItem");
if( null != field ) ...{
field.setAccessible(true);
FileItem fileItem = (FileItem)field.get(obj);
map.put(fileItem.getFieldName(), fileItem);
}
}
}catch( Exception ex) ...{
throw new GuiException(null, ex.getMessage());
}
return map;
}
此方法是通过反射来获取Struts类中一个私有的成员变量来获取上传的文件对象的,当然这只是一个临时的解决办法,并且如果要更换Struts版本,最好还是要去再测试一下,以防止类有变化。
说到这里,其实我们还有一种办法可以参考,就是使用Filter,我们可以添加一个FileUploadFilter来在struts处理之前获取FileItem对象并且用request.setAttribute方法放入request对象中。当然这只是一个想法,没有具体测试过。
转载于:https://www.cnblogs.com/wdpp/archive/2007/08/14/2386394.html
Struts1.x多文件上传问题相关推荐
- JavaWeb -- Struts1 多文件上传与下载 DownloadAction, DispatchAction
1. 多文件上传与下载 上传下载jsp: <%@ page language="java" import="java.util.*" pageEncodi ...
- struts2.0实现文件上传
首先,引入jar包.除了 Struts2.0的几个核心jar包外,还需要额外引入commons-fileupload.jar和commons-io.jar. 引入这两个包的时候,似乎版本也是一个比较重 ...
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- springMVC3.0(文件上传,@RequestMapping加参数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传参,ajax,拦截器)
1.项目包结构如下: 2. spring配置文件springMVC.xml修改如下: <?xml version="1.0" encoding="UTF ...
- Java进阶学习第十六天(Struts框架:配置、数据处理、自动封装、日期类型转换、文件上传)
一.Struts2配置 1.Struts2的Action开发的几种方式 ① 方式1:继承ActionSupport(一般使用方法) public class UserAction extends Ac ...
- web文件上传下载原理浅析
一.web文件上传浅析 现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload.还有Struts1.x和Struts2中带的上传文件功能 ...
- springboot设置文件上传大小(tomcat默认1M)
application.yml # 设置文件上传大小(tomcat默认1M) server:tomcat:max-http-form-post-size: -1 spring:servlet:mult ...
- 将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器 需要配置修改的点: 1. 服务器ip端口(服务器ip 端口22/21). 2. 服务器账号密码(服务器登录用户名密码). 3. 上 ...
- Springboot 多文件上传
其实多个文件和单个文件上传是一样的,可以使用同一个Controller 添加依赖 <!-- https://mvnrepository.com/artifact/commons-fileuplo ...
最新文章
- [crypto]-51.1-python的aes加解密/rsa生成密钥对/rsa加解密/hmac加密
- JavaScript面向对象——深入理解原型继承
- [翻译] 初看 ASP.NET Core 3.0 即将到来的变化
- mybatis if-else(写法)
- _java5条件阻塞Condition的应用
- 015、JVM实战总结:大厂面试题:什么情况下JVM内存中的一个对象会被垃圾回收?
- sql数据库查询聚合函数_如何使用SQL Server数据质量服务确保正确的数据聚合
- 《剑指 Offer I》刷题笔记 20 ~ 30 题
- What?一周内咸鱼疯转2.4W次,最终被所有大厂封杀!
- (转)今天的人工智能比肩工业革命毫不夸张
- 数据库SQL语言从入门到精通--Part 1--SQL语言概述
- html 播放wav,js播放wav文件(源码)
- java爬虫爬取b站视频分享iframe代码并保存10000条数据到数据库
- 《穿透:像社会学家一样思考》简述
- 增长黑客读书笔记(一)搭建增长团队
- 我搭的神经网络不 work 该怎么办!看看这 11 条新手最容易犯的错误
- php执行shell脚本
- 鸡嗉囊炎有哪些症状 什么药防治鸡嗉囊肿大
- python输入一个三位整数、求逆序数_输入一个三位正整数,要求其输出对应的逆序数...
- sql增删改查语句实例
热门文章
- bzoj 1726: [Usaco2006 Nov]Roadblocks第二短路(A*第k短路)
- bzoj 1677: [Usaco2005 Jan]Sumsets 求和(DP)
- np.random.uniform,random,choice,newaxis
- 安卓服务service全解,生命周期,前台服务、后台服务,启动注销、绑定解绑,注册
- Echarts数据可视化tooltip提示框,开发全解+完美注释
- 腾讯云配置Ubuntu使用SSH登录
- 贺利坚老师汇编课程37笔记:运用栈加两层循环之把六个字符串里的字母都改写成大写字母
- AD画电路的踩坑点——继电器线圈的正负性以G6K-2F-Y为例
- Vue、J2ee - 001 : Vue项目的创建过程
- 栈增长方向与大端/小端问题