`

Struts2(12):Struts2的上传下载续

阅读更多

使用Struts2结束common的fileupload和io两个包进行上传下载开发

 

首先编写upload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib  prefix="s" uri="/struts-tags"%>
<html>
  <body>
	   <s:form action="upload" theme="simple" enctype="multipart/form-data">
	  	<table align="center" width="40%">
		    <tr>
		    	<td>username:</td>
		    	<td><s:textfield name="username"></s:textfield></td>
		    </tr>
		    <tr>
		    	<td>password:</td>
		    	<td><s:password name="password"></s:password></td>
		    </tr>
		    <tr>
		    	<td>file:</td>
		    	<td><s:file name="file"></s:file></td>
		    </tr>
		    <tr>
		    	<td><s:submit></s:submit></td>
		    	<td><s:reset></s:reset></td>
		    </tr>
	    </table>
	  </s:form>
  </body>
</html>

 

配置struts.xml文件

<constant name="struts.i18n.encoding" value="gbk"></constant> <!--将struts2的默认编码改为gbk -->
<constant name="struts.multipart.saveDir" value="c:\\"></constant>
<action name="upload" class="com.test.action.UploadAction">
	<result name="success">/uploadResult.jsp</result>
</action>

 UploadAction.java,上传的文件会放入WebRoot/upload目录下

package com.test.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
	private String username;
	private String password;
	private File file;
	//下面两个变量是文件名与文件类型,Struts2会自动为以下两变量赋值
	private String fileFileName;
	private String fileContentType;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public File getFile() {
		return file;
	}
	public void setFile(File file) {
		this.file = file;
	}
	public String getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}
	public String getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	
	public String execute() throws Exception {
		//所谓文件上传,其实就是一个输入输出的操作,从一个输入流写到一个输出流。
		InputStream is = new FileInputStream(file);
		String root = ServletActionContext.getRequest().getRealPath("upload");
		File destFile = new File(root,this.getFileFileName());
		OutputStream os = new FileOutputStream(destFile);
		byte[] buffer = new byte[400];
		int length = 0;
		while((length= is.read(buffer)) > 0){
			os.write(buffer, 0, length);
		}
		is.close();
		os.close();
		return SUCCESS;
	}
}

 

uploadResult.jsp得到返回的结果

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
  <body>
  	username:<s:property value="username"/><br>
  	password:<s:property value="password"/><br>
  	file:<s:property value="fileFileName"/>
  </body>
</html>

 如何上传指定个数的文件?如同时上传3个,则需要修改action类,使用集合类来支持

package com.test.action;

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 org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport {
	private String username;
	private String password;
	private List<File> file;
	//下面两个变量是文件名与文件类型,Struts2会自动为以下两变量赋值
	private List<String> fileFileName;
	private List<String> fileContentType;
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	public List<File> getFile() {
		return file;
	}
	public void setFile(List<File> file) {
		this.file = file;
	}
	public List<String> getFileFileName() {
		return fileFileName;
	}
	public void setFileFileName(List<String> fileFileName) {
		this.fileFileName = fileFileName;
	}
	public List<String> getFileContentType() {
		return fileContentType;
	}
	public void setFileContentType(List<String> fileContentType) {
		this.fileContentType = fileContentType;
	}
	public String execute() throws Exception {
		for(int i = 0;i < file.size(); i++){
			InputStream is = new FileInputStream(file.get(i));
			String root = ServletActionContext.getRequest().getRealPath("upload");
			File destFile = new File(root,this.getFileFileName().get(i));
			OutputStream os = new FileOutputStream(destFile);
			byte[] buffer = new byte[400];
			int length = 0;
			while((length= is.read(buffer)) > 0){
				os.write(buffer, 0, length);
			}
			is.close();
			os.close();
		}
		return SUCCESS;
	}
}

 

分享到:
评论

相关推荐

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts2中的文件上传和下载示例

    3. 配置Struts2:在struts.xml配置文件中,配置文件上传拦截器(`struts.multipart.parser`),如`org.apache.struts2.dispatcher.multipart.JakartaMultiPartParser`。 4. 编写Action:创建一个Action类,使用`@...

    struts框架-文件上传下载

    2. Struts2中的文件上传:Struts2提供了更简洁的文件上传方式。在JSP页面中,可以使用`&lt;s:file&gt;`标签来创建文件选择控件。在Action类中,使用`@SkipValidation`注解标记文件上传方法,然后定义对应的`java.io.File`...

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    Struts2文件动态上传和动态下载(可自动生成下载内容)

    文件上传和下载是Web应用程序中的常见需求,Struts2提供了完善的机制来处理这些功能。在"Struts2文件动态上传和动态下载(可自动生成下载内容)"这个项目中,J-CN工作室提供了一个完整的MyEclipse工程源码,使得开发者...

    struts2上传下载

    在这个"struts2上传下载"项目中,重点是实现文件和图像的上传与下载功能,这对于许多Web应用来说是一个常见的需求,如社交媒体、文档管理或者个人云存储服务。 1. **Struts2框架详解** - **MVC架构**:Struts2的...

    Struts2使用SWF上传下载

    综上,结合Struts2和SWFUpload,开发者能够构建出高效、安全的文件上传下载功能,提供良好的用户体验。在实际开发中,需要注意文件上传的安全性和性能优化,确保系统的稳定性和用户的数据安全。

    浪曦Struts2系列视频教程

    教程名称:浪曦Struts2系列视频教程课程目录:【】1 Struts2入门与配置【】10 Struts2的核心 拦截器【】11 Struts2的核心 拦截器续【】12 Struts2的文件上传和下载【】13 Struts2的文件上传和下载续【】14 Struts2的...

    Struts2文件上传下载.docx

    ### Struts2 文件上传与下载实现详解 #### 一、简介 在Web开发中,文件的上传和下载是非常常见的需求之一。Struts2框架作为Java Web开发中的一个重要框架,提供了非常方便的方式来处理这类操作。本文将详细介绍如何...

    struts文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户通过表单提交的文件,或者允许用户从服务器下载文件。这些功能极大地增强了Web应用的交互性和实用性。 在Struts2中实现文件上传,主要涉及到以下几...

    struts2+hibernate做的上传和下载文件例子

    在这个"struts2+hibernate做的上传和下载文件例子"中,我们将深入探讨如何利用这些技术来实现文件的上传和下载功能。 1. **文件上传** - Struts2提供了内置的文件上传支持,通过`&lt;s:file&gt;`标签可以创建一个文件...

    struts2上传文件进度条显示

    Struts2作为一款流行的Java Web框架,提供了丰富的功能来处理用户请求,包括文件上传。在Struts2中实现文件上传并展示进度条是一项常见的需求,它能提升用户体验,尤其是在处理大文件时。以下将详细解释如何在Struts...

    struts2 上传和下载

    Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来组织和构建应用程序,同时支持文件上传和下载功能。在Struts2中,文件上传和下载是通过Action类、拦截器以及配置文件来实现的。以下是关于Struts...

    struts2文件上传与下载

    5. **断点续传**:虽然Struts2本身不直接支持断点续传,但可以通过自定义拦截器或服务端逻辑实现这一功能,通过跟踪用户下载进度来提供中断和恢复下载的能力。 6. **安全性**:确保只允许授权用户访问可下载的文件...

    struts2 多个文件上传 插件goouploader

    在Struts2中处理文件上传是一项常见的需求,而Goouploader插件就是专门为了简化这一过程而设计的。Goouploader插件允许用户在Web表单中选择多个文件进行同时上传,极大地提高了用户体验。 在Struts2中,传统的文件...

    struts2 文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。以下是对这一主题的详细阐述。 1. **文件上传** - **MultipartResolver**: 在处理文件上传时,Struts2首先需要一个MultipartResolver...

    文件上传例子,struts2+hibernate

    这个例子展示了如何使用Struts2和Hibernate这两个流行的开源框架来实现文件上传。Struts2是一个强大的MVC(Model-View-Controller)框架,而Hibernate则是一个优秀的对象关系映射(ORM)工具,用于简化数据库操作。 ...

    Struts2官网最新2.38版jar包

    Struts2是一个非常著名的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,用于构建高效、可扩展且易于维护的企业级应用程序。Struts2的2.38版是其官方发布的最新版本,针对之前版本进行了优化和更新...

    struts2学习笔记十四(第14讲.Struts2的文件上传和下载续二)

    在本篇“Struts2学习笔记十四”中,我们将深入探讨Struts2框架如何实现文件上传和下载功能,这是web应用中常见的需求,尤其在处理用户提交的表单数据时。我们将不涉及具体代码,而是重点讲解相关概念和技术原理。 ...

    struts2文件上传

    Struts2文件上传是Web开发中的一个重要功能,它允许用户通过网页上传本地文件到服务器。在Struts2框架中,文件上传是通过特定的插件和配置实现的,提供了便捷的方式来处理用户提交的文件数据。以下是对Struts2文件...

Global site tag (gtag.js) - Google Analytics