- 浏览: 27450 次
- 性别:
- 来自: 潍坊
文章分类
最新评论
-
赤木晴子:
垃圾 没有jar包
struts2 velocity -
duronshi:
弱弱问下,如果我不用struts的标签<s:form而用 ...
struts2 基本校验 -
java_vm:
hyx0914 写道呵呵,这样写的话为什么不在前台页面就验证了 ...
struts2 基本校验 -
hyx0914:
呵呵,这样写的话为什么不在前台页面就验证了呢?
struts2 基本校验 -
chrislee1982:
还用这种方式验证?难道不知道可以使用xml配置或者annota ...
struts2 基本校验
在Web项目中导入支持文件上传下载和IO输入输出的两个jar包。它们名字为commons-fileupload-1.2.1.jar和commons-io-1.4.jar
package com.example.struts.action; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { //上传文件存放路径 private final static String UPLOADDIR = "/upload"; //上传文件集合 private List<File> file; //上传文件名集合 private List<String> fileFileName; //上传文件内容类型集合 private List<String> fileContentType; public List<File> getFile() { return file; } public void setFile(List<File> file) { this.file = file; } public List<String> getFileFileName() { return fileFileName; } public void setFileFileName(List<String> fileFileName) { this.fileFileName = fileFileName; } public List<String> getFileContentType() { return fileContentType; } public void setFileContentType(List<String> fileContentType) { this.fileContentType = fileContentType; } public String execute() throws Exception { for (int i = 0; i < file.size(); i++) { //循环上传每个文件 uploadFile(i); } return "success"; } //执行上传功能 private void uploadFile(int i) throws FileNotFoundException, IOException { try { InputStream in = new FileInputStream(file.get(i)); String dir = ServletActionContext.getRequest().getRealPath(UPLOADDIR); File uploadFile = new File(dir, this.getFileFileName().get(i)); OutputStream out = new FileOutputStream(uploadFile); byte[] buffer = new byte[1024 * 1024]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } in.close(); out.close(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } }
“fileFileName”和“fileContentType”读者看了有点别扭,尤其是“fileFileName”感觉不符合Java命名规范,但是这两个属性变量是“fileUpload”拦截器类中的类公有变量名字,只有这样定义,UploadAction执行时候会把在页面上选择的上传文件的属性值放在这两个变量里面!
package com.example.struts.action; import java.io.InputStream; import java.io.UnsupportedEncodingException; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class DownLoadAction extends ActionSupport { //下载文件原始存放路径 private final static String DOWNLOADFILEPATH="/upload/"; //文件名参数变量 private String fileName; public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } //从下载文件原始存放路径读取得到文件输出流 public InputStream getDownloadFile() { return ServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH+fileName); } //如果下载文件名为中文,进行字符编码转换 public String getDownloadChineseFileName() { String downloadChineseFileName = fileName; try { downloadChineseFileName = new String(downloadChineseFileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return downloadChineseFileName; } public String execute() { return SUCCESS; } }
<!-- 上传文件表单定义 --> <s:form action="upload.action" method="post" enctype="multipart/form-data"> <tr> <!-- 上传文件标签定义 --> <td>上传文件:<s:file name="file"></s:file></td> </tr> <tr> <td>再次上传文件:<s:file name="file"></s:file></td> </tr> <tr> <td align="left"><s:submit name="submit" value="提交"></s:submit></td> </tr> </s:form>
上传文件: <table> <!-- 循环显示上传成功文件名 --> <s:iterator value="fileFileName" status="fn"> <tr> <td> <!-- 上传成功文件名 --> <s:property /> </td> <td> <!-- 下载文件链接内容为定义的下载Action --> <!-- 下载文件名作为链接参数fileName值,用OGNL表达式表达 --> <a href="<s:url value='download.action'> <s:param name='fileName' value='fileFileName[#fn.getIndex()]'/> </s:url>">下载</a> </td> </tr> </s:iterator> </table>
<package name="C01" extends="struts-default" namespace="/"> <!-- 通过Action类处理才导航的的Action定义 --> <action name="upload" class="com.example.struts.action.UploadAction"> <result name="input">/jsp/upload.jsp</result> <result name="success">/jsp/result.jsp</result> <!--显示配置文件上传拦截器 --> <interceptor-ref name="fileUpload"> <!--指定特定类型的上传文件 --> <param name ="allowedTypes">text/plain,application/xml</param> </interceptor-ref > <interceptor-ref name="defaultStack"></interceptor-ref > </action> <!-- 下载文件的Action定义 --> <action name="download" class="com.example.struts.action.DownLoadAction"> <!-- 设置文件名参数,由页面上传入 --> <param name="fileName"></param> <result name="success" type="stream"> <!-- 下载文件类型定义 --> <param name="contentType">text/plain</param> <!-- 下载文件处理方法 --> <param name="contentDisposition"> attachment;filename="${downloadChineseFileName}" </param> <!-- 下载文件输出流定义 --> <param name="inputName">downloadFile</param> </result> </action> <action name="index"> <result>/jsp/upload.jsp </result> </action> </package>
定义了一个名为“allowedTypes”的参数,其中在<param></param>之间的是文件类型,也可以用“,”间隔,表示允许上传多个文件类型txt、xml格式的文件
'.a' : 'application/octet-stream', '.ai' : 'application/postscript', '.aif' : 'audio/x-aiff', '.aifc' : 'audio/x-aiff', '.aiff' : 'audio/x-aiff', '.au' : 'audio/basic', '.avi' : 'video/x-msvideo', '.bat' : 'text/plain', '.bcpio' : 'application/x-bcpio', '.bin' : 'application/octet-stream', '.bmp' : 'image/x-ms-bmp', '.c' : 'text/plain', # Duplicates '.cdf' : 'application/x-cdf', '.cdf' : 'application/x-netcdf', '.cpio' : 'application/x-cpio', '.csh' : 'application/x-csh', '.css' : 'text/css', '.dll' : 'application/octet-stream', '.doc' : 'application/msword', '.dot' : 'application/msword', '.dvi' : 'application/x-dvi', '.eml' : 'message/rfc822', '.eps' : 'application/postscript', '.etx' : 'text/x-setext', '.exe' : 'application/octet-stream', '.gif' : 'image/gif', '.gtar' : 'application/x-gtar', '.h' : 'text/plain', '.hdf' : 'application/x-hdf', '.htm' : 'text/html', '.html' : 'text/html', '.ief' : 'image/ief', '.jpe' : 'image/jpeg', '.jpeg' : 'image/jpeg', '.jpg' : 'image/jpeg', '.js' : 'application/x-javascript', '.ksh' : 'text/plain', '.latex' : 'application/x-latex', '.m1v' : 'video/mpeg', '.man' : 'application/x-troff-man', '.me' : 'application/x-troff-me', '.mht' : 'message/rfc822', '.mhtml' : 'message/rfc822', '.mif' : 'application/x-mif', '.mov' : 'video/quicktime', '.movie' : 'video/x-sgi-movie', '.mp2' : 'audio/mpeg', '.mp3' : 'audio/mpeg', '.mpa' : 'video/mpeg', '.mpe' : 'video/mpeg', '.mpeg' : 'video/mpeg', '.mpg' : 'video/mpeg', '.ms' : 'application/x-troff-ms', '.nc' : 'application/x-netcdf', '.nws' : 'message/rfc822', '.o' : 'application/octet-stream', '.obj' : 'application/octet-stream', '.oda' : 'application/oda', '.p12' : 'application/x-pkcs12', '.p7c' : 'application/pkcs7-mime', '.pbm' : 'image/x-portable-bitmap', '.pdf' : 'application/pdf', '.pfx' : 'application/x-pkcs12', '.pgm' : 'image/x-portable-graymap', '.pl' : 'text/plain', '.png' : 'image/png', '.pnm' : 'image/x-portable-anymap', '.pot' : 'application/vnd.ms-powerpoint', '.ppa' : 'application/vnd.ms-powerpoint', '.ppm' : 'image/x-portable-pixmap', '.pps' : 'application/vnd.ms-powerpoint', '.ppt' : 'application/vnd.ms-powerpoint', '.ps' : 'application/postscript', '.pwz' : 'application/vnd.ms-powerpoint', '.py' : 'text/x-python', '.pyc' : 'application/x-python-code', '.pyo' : 'application/x-python-code', '.qt' : 'video/quicktime', '.ra' : 'audio/x-pn-realaudio', '.ram' : 'application/x-pn-realaudio', '.ras' : 'image/x-cmu-raster', '.rdf' : 'application/xml', '.rgb' : 'image/x-rgb', '.roff' : 'application/x-troff', '.rtx' : 'text/richtext', '.sgm' : 'text/x-sgml', '.sgml' : 'text/x-sgml', '.sh' : 'application/x-sh', '.shar' : 'application/x-shar', '.snd' : 'audio/basic', '.so' : 'application/octet-stream', '.src' : 'application/x-wais-source', '.sv4cpio': 'application/x-sv4cpio', '.sv4crc' : 'application/x-sv4crc', '.swf' : 'application/x-shockwave-flash', '.t' : 'application/x-troff', '.tar' : 'application/x-tar', '.tcl' : 'application/x-tcl', '.tex' : 'application/x-tex', '.texi' : 'application/x-texinfo', '.texinfo': 'application/x-texinfo', '.tif' : 'image/tiff', '.tiff' : 'image/tiff', '.tr' : 'application/x-troff', '.tsv' : 'text/tab-separated-values', '.txt' : 'text/plain', '.ustar' : 'application/x-ustar', '.vcf' : 'text/x-vcard', '.wav' : 'audio/x-wav', '.wiz' : 'application/msword', '.wsdl' : 'application/xml', '.xbm' : 'image/x-xbitmap', '.xlb' : 'application/vnd.ms-excel', # Duplicates '.xls' : 'application/excel', '.xls' : 'application/vnd.ms-excel', '.xml' : 'text/xml', '.xpdl' : 'application/xml', '.xpm' : 'image/x-xpixmap', '.xsl' : 'application/xml', '.xwd' : 'image/x-xwindowdump', '.zip' : 'application/zip', firefox 和 ie 的文件类型区别 Java代码 firefox image/jpeg image/bmp image/gif image/png ie 6 image/pjpeg image/bmp image/gif image/x-png ie 7 image/pjpeg image/bmp image/gif image/x-png ie 8 image/pjpeg image/bmp image/gif image/x-png
。这里允许上传文件类型为
- Struts2_06_download_.rar (13.6 KB)
- 下载次数: 70
发表评论
-
struts2 与 jfreechart的整合
2010-07-26 09:00 1430显示效果: 先引入相关的jar包: jcommon- ... -
struts2 以注解的形式实现拦截器
2010-07-26 08:48 867package com.example.struts.acti ... -
struts2 国际化(中英文切换 占位符)
2010-07-26 08:13 2150package com.example.struts.acti ... -
struts2 基本校验(配置文件形式)
2010-07-26 07:56 1254利用配置文件进行校验主要是增加了一些xml文件来对具体表单 ... -
struts2 基本校验
2010-07-26 07:26 1020Struts2对输入校验这方面采用的最基本方 ... -
struts2 全局异常提示定义属性文件使用
2010-07-25 15:30 1218#类型转换提示 xwork.default.invalid. ... -
struts2 类型转换
2010-07-25 15:05 1065在Web项目开发中由于很多数据在页面上显示时候都是 ... -
struts2 freemarker
2010-07-25 14:32 1824freemarker和velocity一样也是一种可以 ... -
struts2 velocity
2010-07-25 14:00 1897velocity翻译成中文就是“速度”的意思,它 ... -
struts2 表单标签的使用
2010-07-25 13:39 1315combobox标签 ... -
struts2 OGNL 表达式及各种标签的使用
2010-07-25 13:24 2109Struts2中将 ... -
struts2 拦截器的使用(继承方法拦截器)
2010-07-24 16:02 1906import com.opensymphony.xwork2. ... -
struts2 拦截器的使用(继承抽象拦截器)
2010-07-24 15:51 1146import com.opensymphony.xwork2. ... -
struts2 type 常量
2010-07-24 15:43 891Type类型值 作用说明 对应类 ... -
struts2学习总结( 使用ActionSupport进行校验)
2010-07-24 15:29 1501= Action类中ActionSupport使用 ... -
Strut2 学习总结(1)基本配置
2010-07-24 11:05 903开发所必备的基本jar包: struts2- ...
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
总的来说,Struts2的文件上传和下载功能通过集成Apache Commons FileUpload库,大大简化了开发者的工作,提供了友好的API和配置选项,使得处理文件上传和下载变得轻而易举。开发者只需要关注业务逻辑,无需过多关注...
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。以下是对这一主题的详细阐述。 1. **文件上传** - **MultipartResolver**: 在处理文件上传时,Struts2首先需要一个MultipartResolver...
这个“Struts2 文件上传和下载示例程序”是一个演示如何在Struts2中实现这两个功能的实例。 文件上传是Web应用程序中的一项重要功能,允许用户从本地计算机选择文件并将其传输到服务器。在Struts2中,这一过程涉及...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 **1.1 基础概念** 文件上传是Web开发中的常见需求之一。在Struts2框架中,实现文件上传主要依赖于表单的`enctype`属性设置为`multipart/form-data`。...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...
在实际项目中,文件上传和下载功能是必不可少的,本实例将详细讲解如何在Struts2框架下实现单个文件及多个文件的上传与下载。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相关的Action配置,以便处理文件...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
Struts2 文件上传和下载是Web开发中常见的情景,主要涉及到HTML表单、HTTP请求、文件处理以及服务器端的响应。以下将详细介绍Struts2框架下如何进行文件的上传和下载。 首先,理解文件上传的基本原理至关重要。当在...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。