Struts2中文件上传下载实例
1.单文件上传
1 jsp页面: 2 3 <!-- 单文件上传 --> 4 <form action="Fileupload.action" method="post" 5 enctype="multipart/form-data"> 6 username: 7 <input type="text" name="username" /> 8 <br /> 9 file: 10 <input type="file" name="file" /> 11 <br /> 12 <input type="submit" name="提交" /> 13 </form> 14 <!--注意:一定要写enctype="multipart/form-data"-->
1 action页面: 2 3 package com.Struts2.action; 4 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import java.io.InputStream; 9 import java.io.OutputStream; 10 11 import org.apache.struts2.ServletActionContext; 12 13 import com.opensymphony.xwork2.ActionSupport; 14 15 public class Fileupload extends ActionSupport { 16 17 /** 18 * 19 */ 20 private static final long serialVersionUID = 4038542394937191173L; 21 22 private String username; 23 private File file; 24 private String fileFileName;// 提交过来的file的名字,必须为FileName后缀 25 private String fileContentType;// 提交过来的file的MIME类型,必须以ContentType为后缀 26 27 public String getUsername() { 28 return username; 29 } 30 31 public void setUsername(String username) { 32 this.username = username; 33 } 34 35 public File getFile() { 36 return file; 37 } 38 39 public void setFile(File file) { 40 this.file = file; 41 } 42 43 public String getFileFileName() { 44 return fileFileName; 45 } 46 47 public void setFileFileName(String fileFileName) { 48 this.fileFileName = fileFileName; 49 } 50 51 public String getFileContentType() { 52 return fileContentType; 53 } 54 55 public void setFileContentType(String fileContentType) { 56 this.fileContentType = fileContentType; 57 } 58 59 @Override 60 public String execute() throws Exception { 61 String root = ServletActionContext.getServletContext().getRealPath( 62 "/upload"); 63 InputStream is = new FileInputStream(file); 64 OutputStream os = new FileOutputStream(new File(root, fileFileName)); 65 66 System.out.println("fileFileName:" + fileFileName); 67 // 因为file是存放在临时文件夹的文件,我们可以将其文件名和文件路径打印出来,看和之前的fileFileName是否相同 68 System.out.println("file:" + file.getName()); 69 System.out.println("file:" + file.getPath()); 70 71 byte[] buffer = new byte[500];// 用缓冲 72 int length = 0; 73 while (-1 != (length = is.read(buffer, 0, buffer.length))) { 74 os.write(buffer); 75 } 76 os.close(); 77 is.close(); 78 79 return SUCCESS; 80 } 81 }
2.多文件上传
1 jsp页面: 2 3 <script type="text/javascript"> 4 $(function() { 5 $("#button").click(function (){ 6 var html = $("<input type='file' name='file'/><br/>"); 7 var button = $("<input type='button' name='button' value='删除'/><br/>"); 8 $("#body div").append(html).append(button); 9 button.click(function (){ 10 html.remove(); 11 button.remove(); 12 }); 13 }); 14 }); 15 </script> 16 <body id="body"> 17 <!-- 多文件上传 --> 18 <form action="manyFileupload.action" method="post" 19 enctype="multipart/form-data"> 20 username: 21 <input type="text" name="username" /> 22 <br /> 23 file: 24 <input type="file" name="file" /> 25 <br /> 26 <input type="button" value="添加" id="button" /> 27 <br /> 28 <div></div> 29 <input type="submit" value="提交" /> 30 </form> 31 </body>
action页面:package com.Struts2.action;import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.List;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/*** 多文件上传* * @author admin* */ public class ManyFileupload extends ActionSupport {/*** */private static final long serialVersionUID = -1060365794705605882L;private String username;private List<File> file;// 因为有多个文件,所以用list集合,file属性指上传到的临时空间文件夹(upload)中的绝对路径private List<String> fileFileName;// 上传的文件名称,自动会加载,因为是以FileName为后缀,会自动识别文件名称private List<String> fileContentType;// 上传过来的文件类型,以ContentType后缀,自动识别类型(如:图片类型就是image/jepg)public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}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;}@Overridepublic String execute() throws Exception {String root = ServletActionContext.getServletContext().getRealPath("/upload");for (int i = 0; i < file.size(); i++) {InputStream is = new FileInputStream(file.get(i));OutputStream os = new FileOutputStream(new File(root, fileFileName.get(i)));byte[] buffer = new byte[500];int length = 0;while (-1 != (length = is.read(buffer, 0, buffer.length))) {os.write(buffer);}os.close();is.close();}return super.execute();}}
3.文件下载
1 jsp页面 2 3 <!-- 下载 --> 4 <form action="fileDownload.action"> 5 <input type="submit" value="下载" /> 6 </form> 7
action页面package com.Struts2.action;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/*** 文件下载* * @author admin* */ public class FileDownload extends ActionSupport {/*** */private static final long serialVersionUID = 509550154000070698L;public InputStream getDownloadFile() {return ServletActionContext.getServletContext().getResourceAsStream("upload/psb.jpg");// 从upload中选择一张图片进行下载 }@Overridepublic String execute() throws Exception {return super.execute();} }
4.struts.xml
1 <!-- 定义全局结果:必须写在action上面 --> 2 <global-results> 3 <result name="success">/success.jsp</result> 4 </global-results> 5 6 <!-- 单文件上传 --> 7 <action name="Fileupload" class="com.Struts2.action.Fileupload"></action> 8 <!-- 多文件上传--> 9 <action name="manyFileupload" class="com.Struts2.action.ManyFileupload"></action> 10 <!-- 文件下载 --> 11 <action name="fileDownload" class="com.Struts2.action.FileDownload"> 12 <result name="success" type="stream"> 13 <param name="contentDisposition">attachment;filename="psb.jpg"</param><!-- attachment表示弹出下载提示框 --> 14 <param name="inputName">downloadFile</param><!-- downloadFile对应action中的getDownloadFile方法 --> 15 </result> 16 </action>
本博客源码出自:http://www.cnblogs.com/xiaoluo501395377/archive/2012/10/26/2740882.html。谢谢他的分享!
转载于:https://www.cnblogs.com/lirenzhujiu/p/5749303.html
Struts2中文件上传下载实例相关推荐
- ASP.NET中文件上传下载方法集合
asp.net 2008-08-23 21:10:35 阅读0 评论0 字号:大中小 订阅 ASP.NET中文件上传下载方法集合 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给 ...
- java文件上传过滤,struts2中文件上传过滤
手动实现文件过滤 大部分时候,Web应用不允许浏览者自由上传,尤其不能允许上传可执行性文件--因为可能是病毒程序.通常,我们可以允许浏览者上传图片,上传压缩文件等:除此之外,还必须对浏览者上传的文件大 ...
- kingedit 上传php_php文件上传下载实例(实现最简单的网盘功能)
本人是一个新手代码狗,第一次发表博客,欢迎大大们指点! 最近手头有一个文件上传下载的案例,跟大家一起分享一下作为一个新手的苦逼成长历程! 话不多说,先上代码: 一:这个是一个文件上传的html页面,小 ...
- Spring MVC文件上传下载实例
工程目录: 导入jar: controllers.FileControler.java package controllers;import java.io.File; import java.io. ...
- 基于struts2的文件上传下载
1.struts.xml 1 <struts> 2 <constant name="struts.multipart.maxSize" value="2 ...
- 【struts2】文件上传下载—struts2实现
struts2实现上传下载时要用到的jar包: UploadAction.java(fileupload.action) package com.rczp.action;import java.io. ...
- Struts2 文件上传,下载,删除
本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...
- Asp.net中文件上传下载的简单实现
1. 文件下载 在asp.net中,如果想点击某aspx的url实现文件下载只要在其Page_Load函数实现目标url的重定向即可.用下列代码即可实现. Response.Redirect(&quo ...
- struts2中文件上传
注意点 private File image;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的private String imageFileName;// 上 ...
最新文章
- 发现check_nginx.sh 里的一个小bug~~~
- Linux进程模型总结
- ORACLE查询删除重复记录
- php有没有dao层,php框架开发四(DAO层)_PHP教程
- 动态规划解决分割问题
- AOP(execution表达式)
- SubSnoic 框架入门到提高(4)---全程记录
- Elasticsearch 备份数据到 AWS S3
- 关于DHCP的中继问题
- Java 实现奇数阶幻方的构造
- while在c语言中的作用,while的用法_C语言中while的用法
- openssl生成自签名证书流程
- 简述python语言的主要功能和特点_python语言的特点有哪些
- python生词本查单词译文_GitHub - To-knowledge/Wudao-dict: 有道词典的命令行版本,支持英汉互查和在线查询。...
- 必看!2021年云计算行业五大趋势,云南昆明企业小型云计算平台搭建及解决方案
- PCB应力应变测试-ICT、FCT治具应力把控标准
- 大熊猫源致病大肠杆菌CCHTP全基因组测序及耐药和毒力基因分析
- Linux | crontab定时任务及开机自启项
- 关于数据挖掘的something
- Kafka之ISR机制的理解
热门文章
- 全志A33-串口SLIP的使用
- 朋友在征信太烂没法办贷款,先买在我名下再过户是否行得通?
- 求职OMG——大学生就业指导与技能
- 分计算iv值_一文读懂评分卡的IV、KS、AUC、GINI指标
- css html 抽屉,CSS快速入门-前端布局1(抽屉)(示例代码)
- 前端将二进制数据流转为文件_前端通过二进制流下载文件
- 利用matlab实现SAR 图像线性拉伸显示
- Linux 释放cpugpu内存、显存和硬盘
- GitHub 新出的 Actions 是什么? 用他做自动测试?
- 1.3 Go语言基础之数据类型