【Struts2】单文件、多文件上传
来源:互联网 发布:舍伍德算法 ppt 编辑:程序博客网 时间:2024/05/16 14:43
转自:http://blog.csdn.net/itwit/article/details/7031785
环境:Myeclipse
前提:为Web项目添加Struts2支持后:
内容是struts2的文件上传汇总,包括单文件和多文件上传,记录下来,留作备份
Struts1实现文件上传的文章(http://blog.csdn.net/itwit/article/details/7031371)
1、单文件上传
1)JSP页面(simple.jsp)
- <%@ page language="java" pageEncoding="utf-8"%>
- <%@taglib prefix = "s" uri = "/struts-tags"%>
- <html>
- <body>
- <H1><s:actionmessage/></H1>
- <s:form action = "simpleAction" enctype="multipart/form-data">
- <s:file name = "upload" label = "请输入要传入的文件名"></s:file>
- <s:submit value = "save"></s:submit>
- </s:form>
- </body>
- </html>
2)Action(SimpleUploadAction)
- package upload.singleUpload;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import com.opensymphony.xwork2.ActionSupport;
- public class SimpleUploadAction extends ActionSupport {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private File upload;//上传的文件
- private String uploadFileName;//上传的文件名称
- private String uploadContentType;//上传的文件类型
- @Override
- public String execute() throws Exception {
- InputStream in = new FileInputStream(upload);
- OutputStream out = new FileOutputStream("d:\\"+uploadFileName);
- byte[] buffer = new byte[8192];
- int count = 0;
- while((count = in.read(buffer)) > 0){
- out.write(buffer,0,count);
- }
- out.close();
- in.close();
- this.addActionMessage("上传成功");
- return SUCCESS;
- }
- public File getUpload() {
- return upload;
- }
- public void setUpload(File upload) {
- this.upload = upload;
- }
- public String getUploadFileName() {
- return uploadFileName;
- }
- public void setUploadFileName(String uploadFileName) {
- this.uploadFileName = uploadFileName;
- }
- public String getUploadContentType() {
- return uploadContentType;
- }
- public void setUploadContentType(String uploadContentType) {
- this.uploadContentType = uploadContentType;
- }
- }
3)Struts配置文件(struts.xml)
- <action name="simpleAction" class = "upload.singleUpload.SimpleUploadAction">
- <result name = "success">/upload/simple/simple.jsp</result>
- <result name = "input">/upload/simple/simple.jsp</result>
- </action>
2、多文件上传
1)JSP页面(mutity.jsp)
- <%@ page language="java" pageEncoding="utf-8"%>
- <%@taglib prefix = "s" uri = "/struts-tags"%>
- <html>
- <head>
- <script language="javascript">
- function addComponent()
- {
- var uploadHTML = document.createElement( "<input type='file' name='upload'/>");
- document.getElementById("files").appendChild(uploadHTML);
- uploadHTML = document.createElement( "<p/>");
- document.getElementById("files").appendChild(uploadHTML);
- }
- </script>
- </head>
- <body>
- <input type="button" onclick="addComponent();" value="添加文件" />
- <br />
- <form action="mutityUpload.action"
- method="post" enctype="multipart/form-data">
- <span id="files">
- <input type='file' name='upload' />
- </span>
- <input type="submit" value="上传" />
- </form>
- </body>
- </html>
2)Action(MutityUploadAction)
- package upload.mutityUpload;
- 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 com.opensymphony.xwork2.ActionSupport;
- public class MutityUploadAction extends ActionSupport {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private List<File> upload;
- private List<String> uploadFileName;
- private List<String> uploadContentType;
- @Override
- public String execute() throws Exception {
- for(int i = 0;upload != null && i<upload.size();i++){
- File file = upload.get(i);
- InputStream in = new FileInputStream(file);
- OutputStream out = new FileOutputStream("d:\\"+uploadFileName.get(i));
- byte[] buffer = new byte[8192];
- int count = 0;
- while((count = in.read(buffer)) > 0){
- out.write(buffer,0,count);
- }
- out.close();
- in.close();
- }
- this.addActionMessage("上传成功");
- return SUCCESS;
- }
- public List<File> getUpload() {
- return upload;
- }
- public void setUpload(List<File> upload) {
- this.upload = upload;
- }
- public List<String> getUploadFileName() {
- return uploadFileName;
- }
- public void setUploadFileName(List<String> uploadFileName) {
- this.uploadFileName = uploadFileName;
- }
- public List<String> getUploadContentType() {
- return uploadContentType;
- }
- public void setUploadContentType(List<String> uploadContentType) {
- this.uploadContentType = uploadContentType;
- }
- }
3)Struts配置文件(struts.xml)
- <action name="mutityUpload" class = "upload.mutityUpload.MutityUploadAction">
- <result name = "success">/upload/mutity/mutity.jsp</result>
- <result name = "input">/upload/mutity/mutity.jsp</result>
- </action>
经过对struts1和2的文件上传学习,总结两者的区别为:
struts2中不需要再单独定义form,在action中可以定义action需要用到的属性
struts1文件上传使用的类是FileForm,struts2使用的类是File
struts2较struts1降低了耦合度,却也增加了action的代码量,总体上来说是简洁了不少。
- struts2文件上传(单文件/多文件)
- Struts2 单文件上传
- struts2单文件上传
- struts2单文件上传
- Struts2 单文件上传
- Struts2 单文件上传
- Struts2单文件上传
- struts2单文件上传
- Struts2单文件上传
- struts2单文件与多文件上传
- 【Struts2】单文件、多文件上传
- Struts2单文件、多文件上传
- struts2单文件,多文件上传
- [struts2]单文件与多文件上传
- Struts2之文件上传(单文件/多文件)
- Struts2之文件上传(单文件/多文件)
- Struts2之文件上传(单文件/多文件)
- Struts2之文件上传(单文件/多文件)
- exit、return、_exit、_Exit这几个函数的区别
- 关于mysql source恢复数据过程中,select操作hang
- Handler机制学习小结
- csapp2e 家庭作业 2.70
- 程序员时事面试题——地震预测
- 【Struts2】单文件、多文件上传
- WinForm中DataGridView的 CellClick 事件的代码
- adb 端口占用
- 遍历图的路径
- C#Winform中如何给DataGridView添加一个自增列
- php面试题收集与整理(二)
- Windows的本地时间(LocalTime)、系统时间(SystemTime)、格林威治时间(UTC-Time)、文件时间(FileTime)之间的转换
- Sql 08 安装【win7下SQLServer 2008 R2安装详细图文教程】 + Sql Server服务 远程过程调用失败问题的解决方案
- 拉普拉斯分布