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 实现图片上传 用户必须能 ...
随机推荐
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q81-Q84)
Question 81You need to create a Web Part that creates a copy of the out-of-the-box Contribute permis ...
- view.performClick()触发点击事件
1.主要作用 自动触发控件的点击事件 2.界面的布局文件 activity_main.xml <RelativeLayout xmlns:android="http://schema ...
- 安卓开发_深入学习ViewPager控件
一.概述 ViewPager是android扩展包v4包(android.support.v4.view.ViewPager)中的类,这个类可以让用户左右切换当前的view. ViewPager特点: ...
- iOS开发基础框架
---恢复内容开始--- //appdelegate //// AppDelegate.m// iOS开发架构//// Copyright © 2016年 Chason. All rights ...
- Silverlight项目笔记3:Silverlight RIA Services缓存引发的问题
问题描述:使用Silverlight的RIA Services进行数据库更新操作,重复提交时发现异常,SubmitOperation发生错误,提示实体类冲突,检查发现之前删除的数据竟然还存在(数据库 ...
- iOSQuartz2D-02-绘制炫酷的下载进度条
效果图 实现思路 要实现绘图,通常需要自定义一个UIView的子类,重写父类的- (void)drawRect:(CGRect)rect方法,在该方法中实现绘图操作 若想显示下载进度,只需要实例化自定 ...
- 谷歌浏览器 模拟微信浏览器user-agent
1.F12 2.Elments->Emulation Media: Other Network:Mozilla/5.0 (Linux; Android 4.4.4; HM NOTE 1LT ...
- linux NFS服务器安装与配置 思路
一,nfs服务优缺点 NFS 是Network File System的缩写,即网络文件系统,可以让不同的客户端挂载使用同一个目录,作为共享存储使用,这样可以保证不同的节点客户端数据一致性,在集群架构 ...
- vi, vim 基本使用(1)
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!vi 编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和 ...
- docker-2 深入了解docker
docker镜像.容器.仓库的基本概念 镜像 Docker 镜像就是一个只读的模板.例如:一个镜像可以包含一个完整的 CentOS 操作系统环境,里面仅安装了 httpd或用户需要的其它应用程序. 镜 ...