struts2 s:file标签使用及文件上传例子
<s:form action="uploadaction" method="post" enctype="multipart/form-data" >
<s:file label="上传" theme="simple" name="upload"/>
<s:submit value="上传"/>
</s:form>
struts.xml配置文件
<action name="uploadaction" class="com.butone.struts2.taguser.UploadAction" method="upload">
<!-- 配置fileUpload的拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 配置允许上传的文件类型 -->
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/jpg,application/msword,text/plain
</param>
<!-- 配置允许上传的文件大小 -->
<param name="maximumSize">2000000000</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result>/taguser/result_fileTag.jsp</result>
<result name="input">/taguser/fileTag.jsp</result>
</action>
UploadAction.java上传处理类
public class UploadAction extends ActionSupport {
// 封装单个上传文件域的属性
private File upload;
// 封装单个上传文件类型的属性
private String uploadContentType;
// 封装单个上传文件名的属性
private String uploadFileName;
// 动态设置上传文件保存地址
private String savePath;
public String getSavePath() {
// return ServletActionContext.getRequest().getRealPath("");
String onload = "C:\report\cached\";
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("onload", onload);
// return ServletActionContext.getRequest().getContextPath();
return onload;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
// 上传单个文件的文件类型的setter和getter方法
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getUploadContentType() {
return (this.uploadContentType);
}
// 上传单个文件的文件名的setter和getter方法
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getUploadFileName() {
return (this.uploadFileName);
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
// savePath = ServletActionContext .getRequest().getRealPath("");
}
// 上传单个文件
public String upload() {
try {
// 以服务器的文件保存地址和原文件名建立上传文件输出流
System.out.println(ServletActionContext
.getRequest().getRealPath("")
+ File.separator
+ "images"
+ File.separator
+ getUploadFileName()+"路径");
FileOutputStream fos = new FileOutputStream(ServletActionContext
.getRequest().getRealPath("")
+ File.separator
+ "images"
+ File.separator
+ getUploadFileName());
// 以上传文件建立一个文件上传流
FileInputStream fis = new FileInputStream(getUpload());
// 将上传文件的内容写入服务器
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}
result_file.jsp
文件路径:<s:property value="savePath" />/images/<br>
<s:property value="#request.onload" /> <br>
<img src="<s:property value='#request.onload'/>010.jpg.gif">
<!-- 根据上传文件的文件名,在页面上显示上传的图片 -->
文件为:<s:property value="uploadFileName"/><br>
上传多个文件
fileuploads.jsp
<s:fielderror></s:fielderror>
<!-- <input type="button" onclick="addComponent();" value="在上传一个" name="button" /> -->
<br />
<s:form action="uploadactions" method="post" enctype="multipart/form-data">
<s:file name="upload" label="路径"/>
<s:file name="upload" label="路径"/>
<s:file name="upload" label="路径"/>
<s:submit value="上传"/>
</s:form>
struts.xml
<action name="uploadactions" class="com.butone.struts2.taguser.UploadActions" method="upload">
<!-- 配置fileUpload的拦截器 -->
<interceptor-ref name="fileUpload">
<!-- 配置允许上传的文件类型 -->
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg,image/pjpeg,image/jpg,application/msword,text/plain
</param>
<!-- 配置允许上传的文件大小 -->
<!-- <param name="maximumSize">2000000000</param> -->
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result>/taguser/fileuploadoutput.jsp</result>
<result name="input">/taguser/fileuploads.jsp</result>
</action>
UploadActions.java
public class UploadActions extends ActionSupport {
//封装多个上传文件域的属性
private List<File> upload = new ArrayList<File>();
// 封装多个上传文件类型的属性
private List<String> uploadContentType = new ArrayList<String>();
// 封装多个上传文件名的属性
private List<String> uploadFileName = new ArrayList<String>();
//动态设置上传文件保存地址
private String savePath;
public String getSavePath() {
System.out.println("getSavePath()!!!!!");
System.out.println(savePath+"++++++++++++++++++++++++++++++");
return savePath;
}
public void setSavePath(String savePath) {
System.out.println("setSavePath()!!!!!");
this.savePath = savePath;
// savePath = "E:\butone\struts2.2\WebRoot\images\"+getUploadFileName();
}
//上传多个文件对应文件内容的setter和getter方法
public List<File> getUpload() {
return upload;
}
public void setUpload(List<File> upload) {
System.out.println("---------------- setUpload(List<File> upload) ----------------");
this.upload = upload;
}
// 上传多个文件的文件类型setter和getter方法
public List<String> getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(List<String> uploadContentType) {
this.uploadContentType = uploadContentType;
}
// 上传多个文件的文件名的setter和getter方法
public List<String> getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(List<String> uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String upload() {
//savePath = "E:\butone\struts2.2\WebRoot\images\";
savePath = ServletActionContext.getRequest().getRealPath("");
System.out.println("upload()!!!!!");
//上传多个文件
List<File> files = getUpload();
// String ext ="";
FileOutputStream fos = null;
FileInputStream fis = null;
byte[] buffer = new byte[1024];
int len = 0;
Random rd = new Random();
System.out.println(files.size()+" ----------------");
System.out.println(getSavePath());
for (int i = 0; i < files.size(); i++) {
try {
//以服务器的文件保存地址和当前时间组合文件名建立上传文件输出流
// ext =uploadFileName.get(i).substring(uploadFileName.get(i).lastIndexOf('.'));
/* fos = new FileOutputStream(getSavePath()+ File.separator+
* DateFormatUtil.getCurrentCustomFormatDateTime(DateFormatUtil.DATE_TIME_FORMAT_14) +
* String.valueOf(rd.nextInt(1000))+ext);
*/
System.out.println(getSavePath()+"------------------------getsavepath!!!");
fos = new FileOutputStream(getSavePath() + File.separator
+ uploadFileName.get(i));
// 以上传文件建立一个文件上传流
fis = new FileInputStream(files.get(i));
// 将上传文件的内容写入服务器
len = 0;
while ((len = fis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
return SUCCESS;
}
}
fileuploadoutput.jsp
<!-- 输出上传的表单里的文件标题属性 -->
文件路径:<s:property value="savePath" /><br>
<s:property value="#request.onload" /> <br>
<!-- 根据上传文件的文件名,在页面上显示上传的图片 -->
文件为:<s:property value="uploadFileName"/><br>
<s:iterator value="uploadFileName">
<img src="<s:property />" />
<!-- 就是为了打印图片名称,但好像不支持中文图片的 -->
<s:property/>
</s:iterator>
struts2 s:file标签使用及文件上传例子的更多相关文章
- SpringMVC学习总结(六)——SpringMVC文件上传例子(2)
基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下使用SpringMVC进行表单上的文件上传以及多个文件同时上传的不同方法 一.配置文件: SpringMVC 用的是 的 ...
- 根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)
首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" acti ...
- input标签处理多文件上传
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- DVWA(九):File Upload 全等级文件上传
File Upload 文件上传,通常是由于对上传文件的类型没有进行严格的过滤.限制造成的,一般思路是 通过上传木马获取服务器的webshell(通过网络端口对网站服务器某种程度上的操作权限 也叫网站 ...
- SpringMVC学习总结(五)——SpringMVC文件上传例子
这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" e ...
- struts2.1.6教程九、文件上传下载(了解)
首先建立struts2UpDownLoad项目,搭建好struts2基本的开发环境. 上传实例 步骤一:upload.jsp代码如下: <s:form action="upload&q ...
- input标签前台实现文件上传
值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...
- Apache HttpComponents 文件上传例子
/* * ==================================================================== * * Licensed to the Apache ...
- 11、Struts2 的文件上传和下载
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
随机推荐
- android Bundle savedInstanceState用途
经常会出现用户按到home键,退出了界面,或者安卓系统意外回收了应用的进程,这种情况下,使用Bundle savedInstanceState就可以用户再次打开应用的时候恢复的原来的状态 (以下转自: ...
- Java程序性能优化——让你的java程序更快、更稳定
1.Java性能调优概述 1.1.Web服务器,响应时间.吞吐量是两个重要的性能参数. 1.2.程序性能的几个表现: 执行速度:程序的反映是否迅速,响应时间是否足够短 内存分配:分配是否合理,是否过多 ...
- javascript运算符语法概述
× 目录 [1]个数 [2]优先级 [3]结合性[4]类型[5]规则表 前面的话 javascript中的运算符大多由标点符号表示,少数由关键字表示,它们的语法言简意赅,它们的数量却着实不少.运算符始 ...
- WPF 3D 知识点大全以及实例
引言 现在物联网概念这么火,如果监控的信息能够实时在手机的客服端中以3D形式展示给我们,那种体验大家可以发挥自己的想象. 那生活中我们还有很多地方用到这些,如上图所示的Kinect 在医疗上的应用,当 ...
- OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持
本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...
- 我的CentOS 7 U盘安装之路 (Win 8.1 Profession + CentOS 7双系统)
这次为了学习Linux,尝试着安装了鸟哥书上推荐的CentOS这款Distribution,但是安装的是最新版CentOS 7,好像跟书上的差别有点大呢.安装的过程中走了一些弯路,做了一些尝试最后发现 ...
- UVA 11859 Division Game[Nim游戏]
题意:给定一个N*M的矩阵,每次可以选择同一行中的若干个数,把它们变成它们的质因子.问说先手的可否获胜. 同一行相当于1堆,数量就是所有数的质因子个数之和 #include <iostream& ...
- java程序设计之完数
题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如6=1+2+3.编程 找出1000以内的所有完数. 解题过程也很简单: public class wanshu { ...
- SQL编程
变量: 变量是一块内存空间的表示, 数组是一连串空间 如何定义一个变量 第一套变量定义 整型 Declare @num int Set @num=10 Print @num 第二套变量定义 字符 ...
- Spring多种注入方式及注解实现DI
一.Bean作用域 spring容器创建的时候,会将所有配置的bean对象创建出来,默认bean都是单例的.代码通过getBean()方法从容器获取指定的bean实例,容器首先会调用Bean类的无参构 ...