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" οnclick="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>
转载于:https://www.cnblogs.com/w-wfy/p/6239416.html
struts2 s:file标签使用及文件上传例子相关推荐
- Struts2.0第三章(文件上传、ajax开发、json、Fastjson、Jackson、注解开发)
Struts2.0文件上传: 浏览器端注意事项: 1.表单提交方式method = post: 2.表单中必须有一个<input type="file" name = &qu ...
- struts2登录注册示例_Struts 2文件上传示例
struts2登录注册示例 Welcome to Struts 2 file upload example. File Upload is one of the common tasks of a w ...
- EL表达式、JSTL标签库、文件上传和下载
一.EL表达式 1.什么是EL表达式,EL表达式的作用? EL表达式的全称是:Expression Language,是表达式语言. EL表达式的作用:EL表达式主要是替代jsp页面中的表达式脚本在j ...
- jq上传file到php,jQuery文件上传
插件描述:这是一个文件上传的展示,看很多插件,并不满意就自己写了一个,可能兼容性不是很好,没有准确进行测试过,还请各位不吝赐教 更新时间:2019/3/25 下午8:53:17 更新说明:修复上传成功 ...
- linux调用ocx插件_Wordpress file manager插件任意文件上传
白斩鸡@卫兵实验室 近日,Wordpress 插件file manager被爆出严重0day漏洞,本着技术研究角度,和大家分享.探讨其漏洞原因. 该修复程序已在同一天发布,并且WP File Mana ...
- PHP笔记-文件上传例子
程序运行截图如下: 选择文件然后点击提交后: 目录下也有了: 源码如下: index.html <!DOCTYPE html> <html lang="en"&g ...
- php实现上传,PHP实现文件上传例子
实例1: 上载文件表单网页:updatefile.htm 上载文件表单 请选取文件: [Ctrl+A 全部选择 然后拷贝] 处理上载文件网页:updatefile.php3 处理上载文件 copy($ ...
- Struts2实现文件上传并显示实时进度
基于浏览器的文件上传,特别是对于通过<input type="file">标签来实现上传的情况, 存在着严重的性能问题,因为用户提交了文件之后,在浏览器把文件上传到服务 ...
- 11、Struts2 的文件上传和下载
文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...
- 基于Struts2的文件上传
Struts2本身并没提供上传的组件,我们可以通过调用上传框架来实现文件的上传. 一.配置上传解析器 首先要配置项目的框架,也就是倒导入"struts2-core-2.2.1.jar&quo ...
最新文章
- URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)
- PHPcms 把盛大登陆换成人人网登陆
- P4449 于神之怒加强版
- POJ2083-Fractal【分形,分治】
- 前端学习(2565):watch监听
- linux必备工具,Linux装机必备工具
- 张量网络机器学习:最近的进展和前沿,109页ppt
- CAutoupdater通用 自动升级组件用户手册
- java 常量池是什么_Java常量池理解与总结
- ccie 与 java,上海ccie脚踏实地,java常量
- 在iOS项目中,这样才能完美的修改项目名称
- [转]一个计算机专业学生几年的编程经验汇总
- python 服务端判断客户端异常断开
- ESL系统的Docker化部署
- dynamic集合动态添加属性
- excel自动填充下方相同数据
- ml5.js入门二(介绍)+featureExtractor特征提取器
- 自同步扰乱编码器的原理与MATLAB仿真
- 爪哇国新游记之五----继承与接口
- sql查询ID=1与数据后几条,并且将查询的两个数据显示在一个查询窗口中
热门文章
- TBB(Intel Threading Building Blocks)
- docker和vm虚拟机的区别
- 解决php导出excel 长数字变成科学计数法
- 去除移动端alert/confirm的网址(url)
- linux下进程号,Linux下C++获取进程号
- html5编写商城页面,HTML5+CSS3前端入门教程---从0开始通过一个商城实例手把手教你学习PC端和移动端页面开发第2章HTML基础知识...
- java最新 学习路线
- javascript之js实现简单的无缝轮播图(可调节方向)
- Redis基本命令及相关用法
- 阿里云服务器centos7 安装docker 和docker-compose 及相关命令