<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标签使用及文件上传例子的更多相关文章

  1. SpringMVC学习总结(六)——SpringMVC文件上传例子(2)

    基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下使用SpringMVC进行表单上的文件上传以及多个文件同时上传的不同方法 一.配置文件: SpringMVC 用的是 的 ...

  2. 根目录97 <input file>标签,把图片上传到服务器(跟增删改查一起实现)

    首先来个简单的html页面: enctype="multipart/form-data" encoding="multipart/form-data" acti ...

  3. input标签处理多文件上传

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  4. DVWA(九):File Upload 全等级文件上传

    File Upload 文件上传,通常是由于对上传文件的类型没有进行严格的过滤.限制造成的,一般思路是 通过上传木马获取服务器的webshell(通过网络端口对网站服务器某种程度上的操作权限 也叫网站 ...

  5. SpringMVC学习总结(五)——SpringMVC文件上传例子

    这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" e ...

  6. struts2.1.6教程九、文件上传下载(了解)

    首先建立struts2UpDownLoad项目,搭建好struts2基本的开发环境. 上传实例 步骤一:upload.jsp代码如下: <s:form action="upload&q ...

  7. input标签前台实现文件上传

    值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...

  8. Apache HttpComponents 文件上传例子

    /* * ==================================================================== * * Licensed to the Apache ...

  9. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

随机推荐

  1. C++ 栈和堆的区别

    C++中的存储区分为全局数据区.代码区.堆.栈. 全局数据区存放静态数据.全局变量.常量. 代码区存放所有类成员函数和非成员函数的代码. 栈区存放用于函数的返回地址.形参.局部变量.返回类型. 堆区存 ...

  2. ubuntu下设置开机启动服务

    原文:http://blog.csdn.net/dante_k7/article/details/7213151 在ubuntu10.04之前的版本都是使用chkconfig来进行管理,而在之后的版本 ...

  3. Java 容器(list, set, map)

    java容器类库的简化图: (虚线框表示接口, 实线框表示普通的类, 空心箭头表示特定的类实现了接口, 实心箭头表示某个类可以生成箭头所指的类对象) 继承Collection的主要有Set 和 Lis ...

  4. 【转】iframe和父页,window.open打开页面之间的引用

    [转]iframe和父页,window.open打开页面之间的引用 iframe和父页,window.open打开页面和被打开页面之间的关系可以通过下面的对象获取到 1)通过iframe加载的,在if ...

  5. 浏览器请求页面时Etag和cache的区别

    etag:简单的说就是服务器收到客户端的请求后,根据返回的内容计算出来一个etag值,返回给客户端,当客户端下次再请求相同路径的时候会带上之前的etag值,服务器端会根据这次请求应该返回的内容计算出新 ...

  6. 【Windows编程】系列第十篇:文本插入符

    大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序.如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符 ...

  7. [django]表格的添加与删除实例(可以借鉴参考)

    自己并未采用任何表格插件,参考网上例子,自己编写出来的django网页实例,请各位参考! 首先看图做事,表格布局采用bootstrap,俗话说bootstrap橹多了就会css了,呵呵,下面看图: 上 ...

  8. [转]17个新手常见Python运行时错误

    原址:http://www.oschina.net/question/89964_62779?p=1 当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的 ...

  9. java 移位运算符

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  10. [No00006C]文件名复制,归档小助手【自己写的小工具,希望能帮助大家】

    特别补充一句:软件可以一次性复制多个文件的文件名. Windows 中的复制文件名实在是有些不方便 ,需要点右键 "重命名"之后再点右键选择"复制"才可复制文件 ...