`

【SSI开发总结.8】Struts2中实现文件上传功能

 
阅读更多

1.编写上传表单

...............................

<s:form name="f1" action="upload!add.htm" method="post" enctype="multipart/form-data">

<s:file name="upload"/><input type="submit" name="Submit" value="上传" />

</s:form>

................................

1.编写Action

package action.game.editor.windows;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.ServletActionContext;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

public class UploadAction extends ActionSupport {
private File upload;//与表单文件域Name属性相同
private String uploadContentType;//表单文件域Name+"ContentType"
private String uploadFileName;//表单文件域Name+"FileName"

private String savePath="/uploadFiles";//保存路径
private String allowTypes="image/pjpeg,image/gif,image/bmp,image/x-png";//允许的文件类型

private String getSavePath() throws Exception
{
return ServletActionContext.getRequest().getRealPath(savePath);
}
//上传文件对应文件内容的setter
public void setUpload(File upload)
{
this.upload = upload;
}
//上传文件的文件类型的setter
public void setUploadContentType(String uploadContentType)
{
this.uploadContentType = uploadContentType;
}
public String getUploadContentType() {
return uploadContentType;
}
//上传文件的文件名的setter
public void setUploadFileName(String uploadFileName)
{
this.uploadFileName = uploadFileName;
}

//得到随机文件名
private String generateFileName(String fileName) {
DateFormat format = new SimpleDateFormat("yyMMddHHmmss");
String formatDate = format.format(new Date());

int random = new Random().nextInt(10000);

int position = fileName.lastIndexOf(".");
String extension = fileName.substring(position);

return formatDate + random + extension;
}


public String execute(){

return SUCCESS;
}


//添加本地图片
public String addLocalIMG() throws Exception{
if(allowTypes.indexOf(uploadContentType)!=-1)
{
if(upload.length()<200000){
String realFileName=generateFileName(uploadFileName);
//以服务器的文件保存地址和原文件名建立上传文件输出流
FileOutputStream fos = new FileOutputStream(getSavePath() + "//" + realFileName);
//以上传文件建立一个文件上传流
FileInputStream fis = new FileInputStream(upload);
//将上传文件的内容写入服务器
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fis.read(buffer)) > 0)
{
fos.write(buffer , 0 , len);
}
fos.close();
fis.close();
//url=ServletActionContext.getRequest().getContextPath()+"/uploadFiles/"+realFileName; //读取图片网络地址
return SUCCESS;
}
else
return "sizeError";
}
else
return "typeError";

}

}

3.注意,最好在struts配置文件中修改最大上传文件大小,然后,在程序中再对文件大小做限制,并且这个限制的值不能大于struts配置文件中已经设置的最大值,单位为字节

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" >
<struts>
<include file="struts-default.xml"/>
<include file="struts-forward.xml"/>
<include file="struts-back.xml"/>
<constant name="struts.i18n.encoding" value="GBK"/>
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.multipart.maxSize" value="4000000" />
</struts>

注意,struts.multipart.maxSize默认为2M大小限制

分享到:
评论

相关推荐

    ssi.rar_ibatis_ibatis struts2_java ssi_myeclipse ssi_struts2

    "ibatis_struts2"表示iBatis和Struts2的集成使用,"java_ssi"可能是指在Java环境下实现的SSI功能,"myeclipse_ssi"则表明在MyEclipse中进行了SSI相关的开发工作。这些标签为理解项目的技术栈提供了指导。 压缩包内...

    SSi(Struts2+Spring+iBatis)实现文件上传下载功能

    在这个项目中,"SSi实现文件上传下载功能"主要是利用Struts2的Action类和拦截器来处理HTTP请求,Spring来管理服务层对象,以及iBatis来与数据库交互,存储和检索文件相关信息。以下是实现这些功能的关键知识点: 1....

    SSI框架集成实例(struts2,spring,ibats)

    SSI框架,即Struts2、Spring和iBatis的集成,是Java开发中常见的Web应用程序架构。这个实例项目展示了如何将这三个组件有效地整合在一起,构建一个功能完善的MVC(Model-View-Controller)应用程序。在数据库层,...

    eclipse开发的ssi整合struts2+ibatis2.x+spring2.5

    在IT行业中,集成Struts2、iBatis2.x和Spring2.5是常见的企业级应用开发模式,这种架构被称为“SSH”(Struts、Spring、Hibernate)的变种,因为iBatis替代了传统的Hibernate作为持久层框架。Eclipse作为Java开发的...

    ssi项目实例 采用struts2、spring2.5、ibatis2.3实现

    Struts2是MVC(Model-View-Controller)架构模式的一种实现,用于简化Java Web应用的开发。在本实例中,Struts2.18负责处理用户请求,提供动作调度和结果映射,使得业务逻辑与视图层分离。它通过Action类来执行业务...

    ssi.rar_DEMO_SSI_struts2 ibatiS

    这个"ssi.rar_DEMO_SSI_struts2 ibatiS"压缩包提供了一个实战示例,帮助开发者了解如何将这三个框架集成到一个项目中。下面我们将详细探讨这些技术及其整合的关键点。 **Struts2框架** Struts2 是一个基于MVC...

    ssi2(struts2+spring+ibatis)整合加用户增加改查操作

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。"ssi2(struts2+spring+ibatis)整合加用户增加改查操作"这个主题涵盖了这三个框架的集成...

    DWC_ssi_user.pdf

    - **生成配置文件**:配置完成后,CoreConsultant 会生成相应的配置文件,这些文件可以用于后续的设计实现。 - **验证配置**:用户可以通过 CoreConsultant 或其他工具对配置进行验证,确保符合预期的设计要求。 - *...

    SSI文件上传与下载V1.3.22

    在"SSI文件上传与下载V1.3.22"这个主题中,我们主要讨论的是如何利用SSI实现文件的上传和下载功能。 一、SSI基础 1. SSI语法:SSI指令通常以`&lt;!--#`开头,`--&gt;`结束,如`&lt;!--#include virtual="header.html" --&gt;`...

    MyEclispse下SSI整合JAR包(Struts1+Spring3+ibatis2)

    2. **导入库文件**:将Struts1、Spring3和iBATIS2的JAR包导入到项目的lib目录中,包括struts-core、spring-context、spring-web、mybatis-core等相关依赖。 3. **配置Struts1**:在web.xml中配置Struts1的Action...

    SSI-ABZ.rar_FPGA ABZ_FPGA SSI_SSI 转 ABZ信号FPAG程序_abz_ssi fpga

    压缩包内的文件"SSI-ABZ"可能是设计文件、配置文件或者是编译后的.bit文件,这些文件用于在FPGA开发工具如Xilinx Vivado、Intel Quartus或Aldec Active-HDL中加载到目标FPGA设备上,实现所述的信号转换功能。...

    ssi(struts2)

    它允许开发者在Struts2应用中利用Spring的强大功能,如依赖注入(Dependency Injection,DI)、面向切面编程(Aspect-Oriented Programming,AOP)以及Spring的其他核心特性。通过整合Struts2和Spring,开发者可以...

    Ssi的整合(Struts2+Spring+Ibatis)

    在Java Web开发中,Struts2、Spring和Ibatis是常见的三大框架,它们各自负责不同的职责,共同构建出强大的后端应用架构。Struts2作为MVC框架处理请求和视图展示,Spring提供了依赖注入和事务管理等功能,而Ibatis则...

    fsl_ssi_dbg.rar_SOC

    总结来说,"fsl_ssi_dbg.rar_SOC"是一个关于Freescale SoC上ALSA子系统中SSI DAI调试的资源,包含的"Fsl_ssi_dbg.c"源代码文件是理解和改进SoC音频处理性能的关键。这涉及到音频硬件驱动编程、DAI操作、调试技术和...

    SSI_Library.rar_SSI_SSI Verilog_logic_ssi verilog_verilog ssi

    在现代数字系统设计中,SSI仍然作为理解数字逻辑设计的基础。Verilog是一种硬件描述语言(HDL),用于描述和模拟数字电子系统的逻辑行为。本压缩包“SSI_Library.rar”似乎包含了一组使用Verilog编写的SSI逻辑门的...

    SSI+EXT (Struts2+Spring+Ibatis+Ext)

    总结来说,SSI+EXT组合提供了完整的前后端开发解决方案,Struts2处理请求,Spring管理业务逻辑,Ibatis负责数据库操作,而Ext JS则为用户提供了友好的交互界面。这个项目实例对于学习和理解这些技术的集成以及实际...

    SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行

    标题中的"SSI+Mina2(Struts2+Spring4+Mybatis3+Mina2)集成发布就可运行"指的是一个基于Java的Web应用程序开发框架的整合,它结合了多种技术来构建高效、灵活和可扩展的网络应用。这个集成方案主要包括以下组件: 1....

    图文搭建SSI(struts+spring+ibatis)框架

    接下来,你需要在项目中编写Action、Service、DAO以及相应的Model类,配置Struts2的`struts.xml`和iBatis的SQL映射文件,以实现实际的业务逻辑。同时,不要忘记在web.xml中配置Struts2和Spring的拦截器及监听器,以...

    omap_ssi_port.rar_SSI

    OMAP SSI Port驱动程序是针对德州仪器(TI)OMAP系列微处理器中串行外设接口(Serial Slave Interface,SSI)的特定实现。SSI在嵌入式系统中被广泛用作高速数据传输机制,特别是在音频、视频和图像处理应用中。这个...

    spring+struts2+ibatis SSI框架搭建

    Spring、Struts2和iBatis是Java Web开发中经典的“SSI”三层架构组合,用于构建灵活、可扩展的企业级应用程序。这个框架集合提供了一种高效且强大的方式来管理后端逻辑、业务处理和数据访问。 Spring框架是核心,它...

Global site tag (gtag.js) - Google Analytics