struts2中文件上传

注意点

     private File image;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的private String imageFileName;//   上传输入域FileName  文件名private String imageContentType;// 上传文件的MIME类型

单个文件

 1 package cn.itcast.action;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 import java.io.Serializable;
10 
11 import javax.servlet.ServletContext;
12 
13 import org.apache.commons.io.FileUtils;
14 import org.apache.struts2.ServletActionContext;
15 
16 import com.opensymphony.xwork2.ActionContext;
17 import com.opensymphony.xwork2.ActionSupport;
18 
19 public class UploadAction1 extends ActionSupport implements Serializable {
20     
21     private File image;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的
22     private String imageFileName;//   上传输入域FileName  文件名
23     private String imageContentType;// 上传文件的MIME类型
24     
25     public File getImage() {
26         return image;
27     }
28 
29 
30 
31     public void setImage(File image) {
32         this.image = image;
33     }
34 
35 
36 
37     public String getImageFileName() {
38         return imageFileName;
39     }
40 
41 
42 
43     public void setImageFileName(String imageFileName) {
44         this.imageFileName = imageFileName;
45     }
46 
47 
48 
49     public String getImageContentType() {
50         return imageContentType;
51     }
52 
53 
54 
55     public void setImageContentType(String imageContentType) {
56         this.imageContentType = imageContentType;
57     }
58 
59 
60 
61     public String execute(){
62         System.out.println(imageContentType);
63         try {
64             //处理实际的上传代码
65             //找到存储文件的真实路径
66 //        System.out.println(imageFileName);
67             ServletContext sc = ServletActionContext.getServletContext();
68             String storePath = sc.getRealPath("/files");
69             //构建输入输出流
70 //            OutputStream out = new FileOutputStream(storePath+"\\"+imageFileName);
71 //            InputStream in = new FileInputStream(image);
72 //            byte b[] = new byte[1024];
73 //            int len = -1;
74 //            while((len=in.read(b))!=-1){
75 //                out.write(b, 0, len);
76 //            }
77 //            out.close();
78 //            in.close();
79             
80             FileUtils.copyFile(image, new File(storePath,imageFileName));
81             
82             ActionContext.getContext().put("message", "上传成功!");
83             return SUCCESS;
84         } catch (Exception e) {
85             e.printStackTrace();
86             return ERROR;
87         }
88     }
89 }

jsp中

1   <body>
2     <form action="${pageContext.request.contextPath}/upload/upload1.action" method="post" enctype="multipart/form-data">
3         文件:<input type="file" name="image"/><br/>
4         <input type="submit" value="上传"/>
5     </form>
6   </body>

 

 

 

多个文件上传

 1 package cn.itcast.action;
 2 
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileNotFoundException;
 6 import java.io.FileOutputStream;
 7 import java.io.InputStream;
 8 import java.io.OutputStream;
 9 import java.io.Serializable;
10 
11 import javax.servlet.ServletContext;
12 
13 import org.apache.commons.io.FileUtils;
14 import org.apache.struts2.ServletActionContext;
15 
16 import com.opensymphony.xwork2.ActionContext;
17 import com.opensymphony.xwork2.ActionSupport;
18 
19 public class UploadAction2 extends ActionSupport implements Serializable {
20     
21     private File[] images;//对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的
22     private String[] imagesFileName;//   上传输入域FileName  文件名
23     private String[] imagesContentType;// 上传文件的MIME类型
24     
25     
26 
27     public File[] getImages() {
28         return images;
29     }
30 
31 
32 
33     public void setImages(File[] images) {
34         this.images = images;
35     }
36 
37 
38 
39     public String[] getImagesFileName() {
40         return imagesFileName;
41     }
42 
43 
44 
45     public void setImagesFileName(String[] imagesFileName) {
46         this.imagesFileName = imagesFileName;
47     }
48 
49 
50 
51     public String[] getImagesContentType() {
52         return imagesContentType;
53     }
54 
55 
56 
57     public void setImagesContentType(String[] imagesContentType) {
58         this.imagesContentType = imagesContentType;
59     }
60 
61 
62 
63     public String execute(){
64         try {
65             
66             if(images!=null&&images.length>0){
67                 ServletContext sc = ServletActionContext.getServletContext();
68                 String storePath = sc.getRealPath("/files");
69                 for(int i=0;i<images.length;i++)
70                     FileUtils.copyFile(images[i], new File(storePath,imagesFileName[i]));
71             }
72             ActionContext.getContext().put("message", "上传成功!");
73             return SUCCESS;
74         } catch (Exception e) {
75             e.printStackTrace();
76             return ERROR;
77         }
78     }
79 }

jsp中

1   <body>
2     <form action="${pageContext.request.contextPath}/upload/upload2.action" method="post" enctype="multipart/form-data">
3         文件1:<input type="file" name="images"/><br/>
4         文件2:<input type="file" name="images"/><br/>
5         <input type="submit" value="上传"/>
6     </form>
7   </body>

struts.xml中配置

设置文件上传大小

1     <constant name="struts.multipart.maxSize" value="52428800"></constant>
1     <package name="upload" namespace="/upload" extends="mypackage">
2         <action name="upload1" class="cn.itcast.action.UploadAction1" method="execute">
3             <result name="success">/success.jsp</result>
4         </action>
5         <action name="upload2" class="cn.itcast.action.UploadAction2" method="execute">
6             <result name="success">/success.jsp</result>
7         </action>
8     </package>

 

转载于:https://www.cnblogs.com/friends-wf/p/3766374.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟内存管理

MMU 现代操作系统普遍采用虚拟内存管理&#xff08;Virtual Memory Management&#xff09;机制&#xff0c;这需要处理器中的MMU&#xff08;Memory Management Unit&#xff0c;内存管理单元&#xff09;提供支持&#xff0c;本节简要介绍MMU的作用。 首先引入两个概念&…

设备驱动框架2——基于驱动框架写LED驱动(具体操作层)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 前言 之前写到&#xff0c;九鼎没有使用内核推荐的LED驱动框架。因此&#xff0c;我们打算基于LED驱动框架来编写x210开发板的LED驱动。编写前先要去除九鼎移植的LED驱动&#xff0c;然后配置内核支…

mysql重新用户设置密码_mysql用户密码如何重新设置?

mysql用户密码重新设置停掉MySQL服务&#xff1a;sudo service mysql stop以上命令适用于Ubuntu和Debian。CentOS、Fedora和RHEL下使用mysqld替换mysql。以安全模式启动mysql&#xff1a;sudo mysqld_safe --skip-grant-tables --skip-networking &这样我们就可以直接用roo…

第三章 门电路

1 半导体二极管开关特性 1 二极管的特性可以近似的用3.2.1的PN结方程和图3.2.2伏安特性曲线描述 如下图 二极管近似伏安特性和对应的等效电路 1 a电路表示vcc和r都很小时候二极管正向导通压降和正向电阻都不能忽视 2 b电路表示二极管正向导通电压不可以忽视&#xff0c;但是二…

多个页面同时跳转到一个页面,然后返回到上级页面

第一步&#xff0c;在page_load事件中写入一下代码&#xff1a; string strUrl Request.UrlReferrer.AbsoluteUri;ViewState["Url"] strUrl;第二步&#xff0c;在返回事件中写入一下代码&#xff1a;string strUrl ViewState["Url"].ToString();Respons…

mysql查询数据库日期_mysql如何查询日期与时间

前言&#xff1a;在项目开发中&#xff0c;一些业务表字段经常使用日期和时间类型&#xff0c;而且后续还会牵涉到这类字段的查询。关于日期及时间的查询等各类需求也很多&#xff0c;本篇文章简单讲讲日期及时间字段的规范化查询方法。1.日期和时间类型概览MySQL支持的日期和时…

设备驱动框架3——使用gpiolib完成LED驱动

以下内容源于朱有鹏嵌入式课程的学习整理&#xff0c;如有侵权请告知删除。 一、前言 在实际情况中&#xff0c;很多硬件都要用到GPIO&#xff0c;因此GPIO会复用&#xff1b;如果同一个GPIO被2个驱动同时控制就会出现bug&#xff1b;因此内核提供了gpiolib来统一管理系统中所有…

from PyQt4 import QtGui,QtCore出错-解

from PyQt4 import QtGui,QtCore出错-解今天尝试着安装PyQt写界面&#xff0c;官网下载后发现import出错了&#xff0c;情况如下图&#xff1a;import PyQt4就可以&#xff0c;from PyQt4 import QtCore却不行提示DLL load faied找了下网上有些人说是某些dll文件丢失了&#xf…

多线程条件变量(pthread_cond_wait)用法

条件变量是利用线程间共享得全局变量进行同步的一种机制&#xff0c;主要包括两个动作&#xff1a;一个线程等待“条件变量的条件成立”而挂起&#xff1b;另一个线程使“条件成立”给出条件成立信号。为了防止竞争&#xff0c;条件变量得使用总是和一个互斥锁结合在一起。 1、…

mysql 文件系统规划_Mysql的文件系统规划以及日志配置

Mysql服务器文件系统规划:/dev/sda1 /boot/dev/sda2 //dev/sda3 /home/dev/sda4 /tmp/dev/sdb1 /data/dev/sdc1 /logsda:系统目录 sdb:数据目录 sdc:日志目录linux调度策略&#xff1a;--查看当前的调度策略:less /sys/block/sdb/queue/scheduler[noop] anticipatory deadli…

设备驱动框架4——将驱动集成到内核中

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 驱动集成到内核的概念 驱动开发的步骤一般是&#xff1a; &#xff08;1&#xff09;以模块的形式在内核外部编写与调试 &#xff08;2&#xff09;将调试好的驱动代码集成到kernel中 之前我们编写的…

VirtualBox 虚拟机的网络设置

http://cnzhx.net/blog/virtualbox-vm-network-setting/ 注意&#xff1a;修改第一个网卡虚拟机&#xff0c;此处网络设置添加的是第二个网卡虚拟机&#xff1f;&#xff1f;转载于:https://www.cnblogs.com/ztinass/p/3771225.html

[ios]UITableViewCell自适应高度 【转】

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { // 列寬 CGFloat contentWidth self.tableView.frame.size.width; // 用何種字體進行顯示 UIFont *font [UIFont systemFontOfSize:13]; // 該…

MYSQL存储磁盘创建vgcreate_【转】parted创建硬盘分区并创建LVM

目的&#xff1a;将两个三T的硬盘做成LVM(sdc,sdd)一、parted将硬盘进行分区&#xff1a;1)parted的命令方式Parted 命令分为两种模式&#xff1a;命令行模式和交互模式。1、命令行模式&#xff1a; parted [option] device [command] ,该模式可以直接在命令行下对磁盘进行分区…

Linux设备驱动模型1——设备驱动模型的简介与底层架构

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 一、linux设备驱动模型简介 1、设备驱动模型的含义 设备驱动模型主要体现为以下四个方面&#xff1a; &#xff08;1&#xff09;类class、总线bus、设备device、驱动driver 这四个概念分别对应着四…

例子简单说说C# ref和out

首写从这字段看 ref 就是引用的意思 out当然就是输出了public void getRefStr(ref string str) {str"hello 你好&#xff0c;你变成了Ref了" }public void getOutStr(out string outStr){outStr "hello 你好&#xff0c;你是out输出的值";} protected…

VARIANT变体类型数据

2019独角兽企业重金招聘Python工程师标准>>> 特殊 Variant 是一种特殊的数据类型&#xff0c;除了定长String数据及用户定义类型外&#xff0c;可以包含任何种类的数据。Variant 也可以包含Empty、Error、Nothing及Null等特殊值。可以用VarType函数或TypeName函数来…

mysql修改校对集_MySQL 图文详细教程之校对集问题

软件安装&#xff1a;装机软件必备包SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集&#xff0c;是一种功能齐全的数据库语言。在使用它时&#xff0c;只需要发出“做什么”的命令&#xff0c;“怎么做”是不用使用者考虑的。SQL功…

Linux设备驱动模型2——总线式设备驱动组织方式(总线、设备、驱动、类等结构体)

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 参考 Linux总线设备驱动模型的理解 struct class 和 struct class_device 前言 这里说的“总线式”&#xff0c;包括I2C总线等具体物理总线&#xff0c;以及平台总线这个虚拟总线。 rootubuntu:/sy…

C# winform 魔兽MH全图制作教程(1): 开发准备工作

C# winform 魔兽MH全图制作教程&#xff08;1&#xff09;: 开发准备工作 一、开发条件&#xff1a; Visual Studio 2008win xp,win 7,win 2003.C# 语言基础会调试能够运行游戏&#xff1a;《魔兽争霸3冰封王座》拥有版本魔兽客户端版本切换器1.20E,1.24E,1.24D二、设计思路&am…