(1)前面的的form JSP 页面
<s:form id="formId" action="/operation/saveCompetitionProductReport.do" enctype="multipart/form-data" theme="simple">
<table>
<tr>
<td colspan="4">关注度截图:
<input type="file" name="pic"/></td>
</tr>
<tr>
<td colspan="4">相关检索字:
<input type="file" name="pic"/></td>
</tr>
</table>
<s:submit/><s:reset/>
</s:form>
(2)struts.xml
<interceptors>
<interceptor-stack name="imgFileUpload">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/x-png</param>
<param name="maximumSize">204800</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"/>
</interceptor-stack>
</interceptors>
<action name="saveCompetitionProductReport" class="operationAction" method="saveCompetitionProductReport">
<interceptor-ref name="imgFileUpload"/> <!-- ================= 拦截器的使用 ================ -->
<result name="success">
/jsp/operation/edit/MyJsp.jsp
</result>
<result name="error">/jsp/error.jsp</result>
</action>
(3)Action
/*-------------------------------------------------*/
private static final int BUFFER_SIZE = 20 * 1024;//文件大小
private File[] pic; //对应 <input type="file" name="pic"/>
private String[] picFileName; //固定构成格式
private String[] picContentType; //固定构成格式
/*-------------------------------------------------*/
//-------- setter / getter
//.......... code here ............
/**
* 复制文件
* @param src
* @param dest
*/
private static void copy(File src, File dest){
try{
InputStream in = null;
OutputStream out = null;
try{
in = new BufferedInputStream(new FileInputStream(src),BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dest),BUFFER_SIZE);
byte[] buffer = new byte[1024];
while(in.read(buffer) > 0){
out.write(buffer);
}
}finally{
if(null != in){
in.close();
}
if(null != out){
out.close();
}
}
}catch(Exception e){
logger.error("复制文件出错",e);
}
}
/**
* 得到文件的后缀名
* @param fileName
* @return
*/
private static String getExtention(String fileName){
int pos = fileName.lastIndexOf(".");
return fileName.substring(pos);
}
public String saveCompetitionProductReport(){
List<String> picUrlList = new ArrayList<String>();//图片在服务器上面的相对位置
if(null != pic){
for(int i = 0, j = pic.length; i<j; i++){
String extention = getExtention(picFileName[i]);
// "/uploadImage" 是 项目下的文件夹,防止上传的文件 图片被成功上传之后,会存放到tomcat的项目/uploadImage 目录下
String fileName = ServletActionContext.getServletContext().getRealPath("/uploadImage")+File.separator+new Date().getTime()+ Math.random() + extention;
//System.out.println("before===================" + fileName +"\t" +picFileName[i]);
File imageFile = new File(fileName);
copy(pic[i], imageFile);
String tmpFileName = fileName.substring(fileName.indexOf(File.separator +"uploadImage"));
picUrlList.add(tmpFileName);
}
Boolean saveMainTableDataFlag = operationBusiness.saveCompetitionProductReport(this);
if(saveMainTableDataFlag){//当主表保存成功的时候,开始保存明细
//--------- code here
}
}
return Action.ACTION_RESULT_SUCCESS;
}
分享到:
相关推荐
首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在Action类中声明一个`List<FileInfo>`类型的字段,用于接收上传的文件...
在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解Struts2中的Action类,它是处理用户请求的核心组件。为了支持文件上传,我们需要创建一个继承自`org....
文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...
在Struts2中,文件上传功能是一个常见的需求,例如用户可能需要上传图片、文档或其他类型的文件。本教程将深入浅出地讲解如何在Struts2中实现文件上传,并提供一个简单的实例来帮助理解。 1. **Struts2文件上传概述...
Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...
6. **源码分析**: 要深入理解Struts2的文件上传机制,你需要查看Struts2的源码,特别是`org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest`和`org.apache.struts2.components.Form`这两个类。...
在Struts2框架中实现文件上传和下载功能,是Web开发中常见的需求。Struts2作为一个成熟的MVC框架,提供了简单的API和标记库来处理文件上传下载的业务逻辑。下面是基于给定文件内容的知识点详细说明。 ### Struts2...
在Struts1.2版本中,实现多文件上传是一项常见的需求,它允许用户在一次提交中上传多个文件,这对于数据交互、资源分享等场景非常实用。在本教程中,我们将深入探讨如何在Struts1.2中实现这一功能。 首先,理解多...
在本项目中,"struts2多文件的上传"实现了用户一次性上传多个文件的能力。 要理解这个功能,首先我们需要了解Struts2中的Action类和Interceptor(拦截器)。Action类是处理用户请求的核心,而Interceptor则用于处理...
Struts2文件上传程序是一个典型的企业级Web应用开发中的功能,它允许用户通过网页将本地文件上传到服务器。Struts2作为一款强大的MVC(Model-View-Controller)框架,提供了丰富的功能支持,包括文件上传。这个示例...
Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`<constant>`标签来设置`struts....
在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...
1. **文件上传组件**:在Struts2中,我们通常使用`Commons FileUpload`库来处理文件上传。这个库提供了处理多部分HTTP请求的能力,是Java中处理文件上传的标准库。我们需要在Struts2配置文件中引入对应的拦截器`...
Struts2 文件上传是Java Web开发中常见的功能,主要用于接收用户通过表单上传的文件。在Struts2框架中,虽然它自身不处理`multipart/form-data`类型的请求,但它依赖于第三方库,如Apache Commons FileUpload,来...
在提供的压缩包`struts2_4`中,可能包含了多个示例项目,每个项目都展示了不同的文件上传实现方式或特定的处理逻辑。每个web包中的详细说明文档可以帮助你深入理解如何在实际应用中实现Struts2的文件批量上传功能。...
Struts2提供了两种主要的文件上传方式:单文件上传和多文件上传。下面将详细介绍这两种方法及其相关知识点。 一、单文件上传 1. **配置Struts2核心过滤器**:首先,需要在web.xml中配置`struts2-convention-plugin...
总结,Struts2中的文件上传功能涉及到Action类的编写、配置文件的设定、JSP页面的构造、文件上传处理以及安全措施等多个方面。理解并熟练掌握这些知识点,能够帮助开发者在Struts2项目中有效地实现文件上传功能。
在 Struts2 中,文件上传功能是通过特定的拦截器(`FileUploadInterceptor`)来实现的。以下是对标题和描述中所述知识点的详细解释: 1. **文件上传原理**: 文件上传的本质是客户端浏览器将本地文件以二进制流的...
文件上传在Struts2中主要依赖于`org.apache.struts2.interceptor.FileUploadInterceptor`拦截器,以及`CommonsFileUpload`库,这是一个Apache提供的用于处理HTTP多部分请求的组件。以下是实现文件上传的关键步骤: ...