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 实现图片上传 用户必须能 ...
随机推荐
- Disconnected: No supported authentication methods available (server sent: publickey)
安装Git客户端后,进行PULL时报如下错误 disconnected no supported authentication methods available(server sent: publi ...
- android拍照选择图片上传服务器自定义控件
做android项目的时候总免不了遇到图片上传功能,虽然就是调用android系统的拍照和相册选择功能,但是总面部了把一大推代码写在activity里,看上去一大推代码头都昏了.不如把这些功能都集成一 ...
- Struts2(十一)OGNL标签三与Struts2标签
一.UI标签 二.简单例子 <h1>添加信息</h1> <!--通过指定theme的属性改变主题 --> <s:form action="" ...
- IOS开发-表单控件的应用
1. 需求描述 2. 开发环境介绍 3. 创建一个工程 4. 工程配置介绍 5. 目录结构介绍 6. 界面设置 7. 关联输入输出 8. 关联事件代码 9. 运行结果 10. UITextField ...
- iOS学习笔记10-UIView动画
上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UI ...
- Objective-C之Block
Block基本概念 本小节知识点: [了解]什么是Block [理解]block的格式 1.什么是Block Block是iOS中一种比较特殊的数据类型 Block是苹果官方特别推荐使用的数据类型, ...
- 转 自定义View之onMeasure()
可以说重载onMeasure(),onLayout(),onDraw()三个函数构建了自定义View的外观形象.再加上onTouchEvent()等重载视图的行为,可以构建任何我们需要的可感知到的自定 ...
- Java异常信息处理
import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.jun ...
- [分享]一个String工具类,也许你的项目中会用得到
每次做项目都会遇到字符串的处理,每次都会去写一个StringUtil,完成一些功能. 但其实每次要的功能都差不多: 1.判断类(包括NULL和空串.是否是空白字符串等) 2.默认值 3.去空白(tri ...
- Linux shell get random number
the Shell Profile: When a new interactive shell is started, /etc/profile, followed by /etc/bash.bash ...