struts2中简单的文件上传
2016-08-31
一、 文件上传
- 利用commons-fileupload-1.2.1.jar实现简单的上传文件,首先在页面上填写表单,记得加上enctype="multipart/form-data",主要是确保上传文件的正确编码,设置表单的MIME编码,让form中的input值以2进制传过去,这样就能用于上传文件了。

2. 配置struts.xml,完成fileUpload与action实例映射, 这里以上传一个图片文件为例
<action name="fileUpload" class="action.UploadAction" method="upload">
<interceptor-ref name="fileUpload"> //设置fileUpload过滤器
<param name="allowedTypes">image/pjpeg,image/jpg,image/jpeg,image/bmp,
image/gif,image/png</param> //设置允许上传的文件类型
<param name="maximumSize">2097152</param> //上传文件的最大Size
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref> //继承默认的拦截器
<param name="savePath">/upload/file</param> //设置上传的文件保存路径
<result>/upload/success.jsp</result> //成功后的跳转页面
<result name="input">/upload/upload.jsp</result> //内部失败返回INPUT
</action>
设置完后在webRoot下创建路径/upload/file,然后配置Tomcat生成文件夹,用来存放上传文件。
3. 然后写对应UploadAction
public class UploadAction extends ActionSupport {
private File pic; //这里的pic可以自己取名XXX
private String picContentType; //这里命名格式必须为XXXContentType与前面的文件命名一致
private String picFileName; //XXXFileName也许一致
private String nickName;
private String savePath; //获取参数savePath
public String upload(){
System.out.println("contentType:"+picContentType);
System.out.println("filename:"+picFileName);
System.out.println("nickName:"+nickName);
System.out.println("savePath:"+savePath);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(pic)); //获取文件的输入流
ServletContext application = ServletActionContext.getServletContext();
//getRealPath 获取文件输出相对路径在硬盘上的实际路径平在后面加上传进来的文件名,这样才能成功上传
bos = new BufferedOutputStream(new FileOutputStream(application.getRealPath(
savePath)+"/"+picFileName));
int r = 0;
while((r=bis.read())!=-1){
bos.write(r);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(bis!=null){
bis.close();
}
if(bos!=null){
bos.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return SUCCESS;
}
另外最后不要忘记加上setter/getter方法。
4.最后再完成上传成功后的显示页面 success.jsp

现在可以启动Tomcat服务器测试了,进入upload.jsp后上传了桌面上的一张图片,


上传成功!
二、 多个文件上传
多个文件上传主要是在action中用数组接住,然后迭代输出就行,基本上步骤一样。

先写上传页面,这里上传2张图片。
<action name="filesUpload" class="action.UploadsAction" method="upload">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/pjpeg,image/jpg,image/jpeg,image/bmp,image/gif,image/png</param>
<param name="maximumSize">4097152</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<param name="savePath">/upload/file</param>
<result>/upload/success2.jsp</result>
<result name="input">/upload/upload2.jsp</result></action>
接着进行Struts.xml配置。

这里action 上传文时用数组接住就行。

最后迭代文件名,显示图片。
****记录下今天的学习内容,如果有什么讲的不清楚的地方欢迎补充
struts2中简单的文件上传的更多相关文章
- Struts2的简单的文件上传
1文件上传的流程: 第一步:首先得用表单标签的<s:file>在客户端接收上传的文件例如: <%@ page language="java" import=&qu ...
- ASP.NET 中对大文件上传的简单处理
在 ASP.NET 开发的过程中,文件上传往往使用自带的 FileUpload 控件,可是用过的人都知道,这个控件的局限性十分大,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的 ...
- 服务器文档下载zip格式 SQL Server SQL分页查询 C#过滤html标签 EF 延时加载与死锁 在JS方法中返回多个值的三种方法(转载) IEnumerable,ICollection,IList接口问题 不吹不擂,你想要的Python面试都在这里了【315+道题】 基于mvc三层架构和ajax技术实现最简单的文件上传 事件管理
服务器文档下载zip格式 刚好这次项目中遇到了这个东西,就来弄一下,挺简单的,但是前台调用的时候弄错了,浪费了大半天的时间,本人也是菜鸟一枚.开始吧.(MVC的) @using Rattan.Co ...
- 使用jsp/servlet简单实现文件上传与下载
使用JSP/Servlet简单实现文件上传与下载 通过学习黑马jsp教学视频,我学会了使用jsp与servlet简单地实现web的文件的上传与下载,首先感谢黑马.好了,下面来简单了解如何通过使用 ...
- Django 实现简单的文件上传
今天分享一下Django实现的简单的文件上传的小例子. 步骤 创建Django项目,创建Django应用 设计模型 处理urls.py 以及views.py 设计模板,设计表单 运行项目,查看数据库 ...
- SSM-SpringMVC-32:SpringMVC中灌顶传授文件上传
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 我将用自认为最简单的语言,描述Springmvc的文件上传,来将老夫毕生功力灌顶传授给你 首先文件上传,又简至 ...
- Struts2框架下的文件上传文件类型、名称约定
Struts2框架下的文件上传机制:1.通过multipart/form-data form提交文件到服务器2.文件名是通过什么地方设置的?在strust2的FileUploadInterceptor ...
- Java实现一个简单的文件上传案例
Java实现一个简单的文件上传案例 实现流程: 1.客户端从硬盘读取文件数据到程序中 2.客户端输出流,写出文件到服务端 3.服务端输出流,读取文件数据到服务端中 4.输出流,写出文件数据到服务器硬盘 ...
- Spring中MultipartHttpServletRequest实现文件上传
Spring中MultipartHttpServletRequest实现文件上传 转贴自:http://my.oschina.net/nyniuch/blog/185266 实现图片上传 用户必须能 ...
随机推荐
- Hadoop技术内幕(YARN)第4章问题部分答案
问题1:改写DistributedShell程序,使得每个container运行在不同节点上(目前是随机的,可能运行在任意节点上). 问题2:改写DistributedShell程序,使得某个用户指定 ...
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- nutch简介
1.什么是 nutch Nutch 是一个开源的. Java 实现的搜索引擎.它提供了我们运行自己的搜 索引擎所需的全部工具.2.研究 nutch 的原因(1) 透明度: nutch 是开放源代码的, ...
- 【转】IOS动画的实现,其实很简单
动画效果提供了状态或页面转换时流畅的用户体验,在iOS系统中,咱们不需要自己编写绘制动画的代码,Core Animation提供了丰富的api来实现你需要的动画效果.UIKit只用UIView来展示动 ...
- 关于第三方IOS的checkBox框架的使用
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- Monyer.cn黑客小游戏
花了一天的时间,Monyer给大家带来了一个有趣的东东——拥有15个关卡的黑客小游戏. 入口http://monyer.com/game/game1 因为一直以来都是大家跟我一起学习网络技术嘛,所以这 ...
- [LoadRunner]性能测试实践_Hessian协议脚本编写2
协议选取和运行配置请参考:http://www.cnblogs.com/whylaughing/p/5430821.html 这次直接贴代码让大家参考: import lrapi.lr; import ...
- android JSON解析之JSONObject与GSON
1.写在前面 JSON数据是android网络开发中常见的数据格式,JSON最常见的传输方法是使用HTTP协议,关于android开发中HTTP协议的使用方法可参考我的另一篇随笔android网络编程 ...
- D_S 顺序栈的基本操作
// main.cpp #include <iostream> using namespace std; #include "Status.h" typedef in ...
- SCAU巡逻的士兵
1142 巡逻的士兵 Description 有N个士兵站成一队列, 现在需要选择几个士兵派去侦察. 为了选择合适的士兵, 多次进行如下操作: 如果队列超过三个士兵, 那么去除掉所有站立位置为奇数的士 ...