`
zhouyangchenrui
  • 浏览: 81824 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

struts2实现多文件上传

阅读更多
参照struts2官网的例子做了一个用struts2实现多文件上传的例子,这里是上传图片文件。
  • 所需要应用的包

  • 页面
上传页面multiFileUpload.jsp,一次上传3个文件
<%@ page language="java" contentType="text/html; charset=utf-8"	pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<title>Struts2FileUpload</title>
</head>
<body>
	<s:form action="multiUpload" method="POST" enctype="multipart/form-data">
		<s:file label="File(1)" name="upload" />
	    <s:file label="File(2)" name="upload" />
	    <s:file label="FIle(3)" name="upload" /> 
		<s:submit />
	</s:form>
</body>
</html>

ShowUploadMore.jsp上传成功页面,imageFileName[0]为取数组值(图片名称),与java后台对应,页面通过取得图片地址显示上传后的图片
<%@ page language="java" contentType="text/html; charset=utf-8"	pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> Struts 2 File Upload </title>
</head>
<body>
    <div style="padding:3px; border:solid 1px #cccccc; text-align:center">
        <img src ='UploadImages/<s:property value ="imageFileName[0]" />'/>
        <img src ='UploadImages/<s:property value ="imageFileName[1]" />'/>
        <img src ='UploadImages/<s:property value ="imageFileName[2]" />'/>
        <br />
        <s:property value ="caption" />
    </div>
</body>
</html>

  • action类MultiFileUploadAction.java,处理三个上传的图片文件,用数组实现。在工程下(WebRoot下)新建一个UploadImages文件夹,用于存放上传的图片
package com.tutorial;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class MultiFileUploadAction extends ActionSupport {
	private static final long serialVersionUID = 572146812454l;
	private static final int BUFFER_SIZE = 16 * 1024;

	/*
	 * 多文件上传(图片)
	 */
	private String[] imageFileName = new String[3];

	private File[] uploads;
	private String[] uploadFileNames;
	private String[] uploadContentTypes;
	
	public String[] getImageFileName() {
	    return imageFileName;
	  }

	public File[] getUpload() {
		return this.uploads;
	}

	public void setUpload(File[] upload) {
		this.uploads = upload;
	}

	public String[] getUploadFileName() {
		return this.uploadFileNames;
	}

	public void setUploadFileName(String[] uploadFileName) {
		this.uploadFileNames = uploadFileName;
	}

	public String[] getUploadContentType() {
		return this.uploadContentTypes;
	}

	public void setUploadContentType(String[] uploadContentType) {
		this.uploadContentTypes = uploadContentType;
	}

	private static void copy(File src, File dst) {
		try {
			InputStream in = null;
			OutputStream out = null;
			try {
				in = new BufferedInputStream(new FileInputStream(src),
						BUFFER_SIZE);
				out = new BufferedOutputStream(new FileOutputStream(dst),
						BUFFER_SIZE);
				byte[] buffer = new byte[BUFFER_SIZE];
				while (in.read(buffer) > 0) {
					out.write(buffer);
				}
			} finally {
				if (null != in) {
					in.close();
				}
				if (null != out) {
					out.close();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static String getExtention(String fileName) {
		int pos = fileName.lastIndexOf(".");
		return fileName.substring(pos);
	}

	@Override
	public String execute() {
		int i = 0;
		for(String fileName:uploadFileNames){
			imageFileName[i] = new Date().getTime()+i + getExtention(fileName);
			File imageFile = new File(ServletActionContext.getServletContext()
					.getRealPath("/UploadImages")
					+ "/" + imageFileName[i]);
			copy(uploads[i++], imageFile); //写文件到UploadImages文件夹
		}
		return SUCCESS;
	}
}

  • 配置文件
struts.xml文件,该文件放在类输出路径下(struts2默认初始化加载),这里放在src下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd" >

<struts>
   <constant name="struts.custom.i18n.resources" value="uploadMessage"/>
   <package name="fileUploadDemo" extends="struts-default">
       
       <action name="multiUpload" class="com.tutorial.MultiFileUploadAction">
           <interceptor-ref name="fileUploadStack"/>
           <result name="success">/ShowUploadMore.jsp</result>
           
           <!-- 多文件上传 -->
       </action>
   </package>
</struts>

web.xml文件,主要是配置struts2的过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
	http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  
   <display-name>Struts 2 Fileupload</display-name>

    <filter>
        <filter-name>struts-cleanup</filter-name >
        <filter-class>
            org.apache.struts2.dispatcher.ActionContextCleanUp
        </filter-class >
    </filter>
    
     <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.FilterDispatcher
        </filter-class>
    </filter>	    
    
    <filter-mapping>
        <filter-name>struts-cleanup</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
  
</web-app>


启动服务,访问http://localhost:8080/struts2upload/multiFileUpload.jsp即可看到效果。
  • 大小: 22.7 KB
分享到:
评论

相关推荐

    Struts2实现多文件上传

    在Struts2中,实现多文件上传功能是常见的需求,尤其在处理用户需要上传多个文件的场景下,如上传图片、文档等。本篇文章将详细介绍如何使用Struts2来实现这一功能。 首先,我们需要理解Struts2的上传机制。在...

    struts2实现多文件上传下载

    文件上传比较多,多文件上传少一点 文件下载很少的,看似简单,实则不然 网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供...

    struts2实现多文件上传功能

    Struts2提供了完善的文件上传支持,让我们来详细探讨如何在Struts2中实现多文件上传。 首先,我们需要在Struts2的配置文件(struts.xml)中启用文件上传的支持。这通常涉及到添加`&lt;constant&gt;`标签来设置`struts....

    swfuplaod+struts2实现多文件上传

    在实现文件上传时,必须注意以下安全问题: 1. **文件类型检查**:限制上传的文件类型,防止恶意用户上传可执行文件或脚本。 2. **文件名重命名**:避免文件覆盖或路径遍历攻击,对上传的文件名进行重命名。 3. **...

    extjs3.2+struts2实现多文件上传excel并插入到数据库

    本项目“extjs3.2+struts2实现多文件上传excel并插入到数据库”是针对这一需求的具体解决方案,利用了ExtJS 3.2前端框架和Struts2后端框架进行开发。 **ExtJS 3.2** 是一个基于JavaScript的富客户端应用框架,提供...

    ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)

    ajaxFileUpload+struts2实现多文件上传(动态添加文件上传框)(项目源码) 博文地址:http://blog.csdn.net/itmyhome1990/article/details/36433621

    struts2实现多文件上传和下载

    在Struts2中实现文件上传和下载功能是常见的需求,这对于处理用户提交的各种文件,如图片、文档等,至关重要。下面将详细阐述如何在Struts2框架下实现多文件上传和下载。 首先,为了实现文件上传,我们需要在Struts...

    ajaxFileUpload+struts2实现多文件上传(源码)

    在本文中,我们将深入探讨如何使用`ajaxFileUpload`与`Struts2`框架结合,实现多文件上传功能。这个示例源码提供了一个实用的方法,使得用户可以在不刷新整个页面的情况下,上传多个文件,提高了用户体验。 首先,`...

    Struts2多个文件上传

    首先,要实现Struts2的文件上传,必须引入必要的依赖库。主要需要两个Apache Commons库:`commons-fileupload-1.2.2.jar`和`commons-io-2.0.1.jar`。这两个库提供了文件上传的基础功能,使得Struts2能够处理`...

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    Struts2实现文件上传

    在这个“Struts2实现文件上传”的主题中,我们将深入探讨如何利用Struts2框架来实现在Web应用中的文件上传功能。 首先,我们注意到一个细节描述:“private String uploadContextType;应更正为private String ...

    struts与hibernate实现文件的上传与动态下载

    通过以上步骤,你可以实现一个基于Struts2和Hibernate的文件上传与动态下载系统。这个系统能够处理用户上传的文件,将其保存到服务器,同时提供动态下载功能,允许用户根据需要下载文件。在实际开发中,还需要考虑...

    在Struts 2中实现文件上传

    在 Struts 2 中实现文件上传,首先需要在 JSP 页面创建一个支持多部分数据的表单。例如,在 `FileUpload.jsp` 文件中,表单的 `method` 应设置为 `POST`,`enctype` 应设置为 `multipart/form-data`。此外,使用 `...

    用Struts框架实现多文件上传功能(初学者的入门项目案例)

    要实现文件上传,你需要完成以下步骤: 1. **配置Struts2上传插件**: 在`struts.xml`配置文件中,添加上传插件的配置,确保它启用并指定了临时文件存储路径: ```xml &lt;constant name="struts.multipart....

    struts2实现的多个文件上传

    在处理文件上传时,Struts2提供了便捷的API和配置方式,使得开发人员能够轻松实现多文件上传的功能。下面将详细阐述如何使用Struts2来实现多个文件的上传。 首先,理解文件上传的基本原理。在HTTP协议中,文件上传...

    Struts2实现文件的上传下载

    在Struts2中,文件上传主要依赖于`org.apache.struts2.components.FileUpload`组件,这个组件是基于Commons FileUpload库实现的,它能够处理multipart/form-data类型的HTTP请求,这是文件上传所必需的格式。...

Global site tag (gtag.js) - Google Analytics