`
rimoer
  • 浏览: 99560 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Struts2上传/下载文件

阅读更多

Action->

 

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@ParentPackage("service-default")
@Results({ @Result(name = "list", location = "/pages/file/upload.jsp") })
public class UploadAction extends BaseAction {
	private static final long serialVersionUID = 4885233632866196355L;
	private final static Logger log = LoggerFactory.getLogger(UploadAction.class);

	private String downpath;
	private String fileName;
	private File file;
	private String[] files;
	InputStream fileInputStream = null;

	@Action("file_index")
	public String list() throws Exception {
		String uploadPath = context.getRealPath(File.separator + "upload");
		File destDir = new File(uploadPath);
		if (destDir.exists() && destDir.isDirectory()) {
			files = destDir.list();
		}

		return "list";
	}

	@Action("file_upload")
	public String file_upload() throws Exception {
		File srcFile = getFile();

		String temp[] = getFileName().replaceAll("\\\\", "/").split("/");
		if (temp.length > 1) {
			setFileName(temp[temp.length - 1]);
		}

		String destFile = context.getRealPath(File.separator + "upload") + File.separator + getFileName();

		FileUtils.copyFile(srcFile, new File(destFile));
		log.debug("save to >" + destFile);

		return list();
	}

	@Action("file_remove")
	public String file_remove() throws Exception {
		String filePath = context.getRealPath(File.separator + "upload") + File.separator + getFileName();
		File file = new File(filePath);
		if (file.exists() && file.isFile()) {
			file.delete();
		}
		return list();
	}

	@Action("file_download")
	public String file_download() throws Exception {
		String filePath = context.getRealPath(File.separator + "upload") + File.separator + getFileName();
		File file = new File(filePath);

		if (file.exists() && file.isFile()) {
			setFileName(file.getName());
			fileInputStream = new BufferedInputStream(new FileInputStream(file));
		}

		return "download";
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}

	public String[] getFiles() {
		return files;
	}

	public void setFiles(String[] files) {
		this.files = files;
	}

	public InputStream getFileInputStream() {
		return fileInputStream;
	}

	public void setFileInputStream(InputStream fileInputStream) {
		this.fileInputStream = fileInputStream;
	}

	public String getDownpath() {
		downpath = context.getContextPath() + "/file_download?fileName=";
		return downpath;
	}

	public void setDownpath(String downpath) {
		this.downpath = downpath;
	}

}

 

 

struts.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
	<constant name="struts.devMode" value="true" />
	<constant name="struts.action.extension" value="" />
	<constant name="struts.configuration.xml.reload" value="true" />
	<constant name="struts.multipart.maxSize" value="102400000" />
	<constant name="struts.i18n.encoding" value="utf-8" />
	<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory" />

	<package name="service-default" extends="struts-default">
		<global-results>
			<result name="error">/pages/error.jsp</result>

			<result name="download" type="stream">
				<param name="contentType">application/octet-stream</param>
				<param name="contentDisposition">attachment;filename="${fileName}"</param>
				<param name="inputName">fileInputStream</param>
			</result>

		</global-results>

		<global-exception-mappings>
			<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
		</global-exception-mappings>
	</package>
</struts>
 

 

 

Pages

 

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>文件上传示例</title>
<script type="text/javascript">
	function remove(fileName) {
		var url="<%=request.getContextPath()%>/file_remove?fileName="+fileName;
		window.document.location = url;
	}

	function download(fileName) {
		var url="<%=request.getContextPath()%>/file_download?fileName="+ fileName;
		window.document.location = url;
	}

	function change(o) {
		document.getElementsByName("fileName")[0].value=o.value;
	}

	function index() {
		var url="<%=request.getContextPath()%>/file_index";
		window.document.location = url;
	}	
</script>
</head>
<body>
	<table border="1" cellpadding="2" cellspacing="5">
		<tr>
			<td align="center">ID</td>
			<td align="center"><a href="#" onclick="index()">INDEX</a></td>
			<td align="center">Func</td>
		</tr>
		<s:iterator value="files" status="st">
			<tr>
				<td><s:property value="#st.index+1" /></td>
				<td><div><s:property value="downpath" /><s:property /></div></td>
				<td>
					<a href="#" onclick="remove('<s:property />')">remove</a> 
					<a href="#" onclick="download('<s:property />')">download</a>
				</td>
			</tr>
		</s:iterator>
	</table>
	<br>
	<s:form name="myform" action="/file_upload" method="POST" enctype="multipart/form-data">
		<s:hidden name="fileName" />

		 <td>
		 	<input type="file" name="file" value="" id="file_upload_file" onchange="change(this)"/>
		 	<input type="submit" value="上传"/>
		 </td>
	</s:form>
</body>
</html>

 

分享到:
评论

相关推荐

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    Struts文件上传/下载,支持多文件上传

    本案例将重点讲解如何在Struts中实现文件的上传与下载,并支持多文件上传。 一、文件上传 1. 配置Struts.xml 首先,我们需要在`struts.xml`配置文件中添加相应的action配置,以处理文件上传请求。例如: ```xml ...

    struts2实现文件上传下载

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

    struts2上传和下载文件详细源码

    在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...

    struts2框架下的文件上传

    Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    struts2实现多文件上传下载

    3.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 4.文件保存的名称UUID生成,不过显示并下载的名称都是原文件名称 (通过UploadFiles处理) 5.对配置文件中的路径可以进行动态读取(不重启服务器) ...

    Struts2文件上传与下载

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...

    struts2_uploadify带进度条的多文件上传下载

    总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...

    struts2文件上传与下载

    在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    Struts2多个文件上传

    在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...

    struts2+extjs3 单/多文件上传

    本文将深入探讨如何使用Struts2和ExtJS3实现单文件和多文件的上传功能。 首先,我们要理解文件上传的基本流程。在Web应用中,用户通过浏览器选择本地文件,然后这些文件的数据被封装到HTTP请求中发送到服务器。...

    struts2 上传下载文件

    使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载

    基于Struts2的文件上传下载功能的完整源代码。

    在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...

    Struts2之struts2文件上传详解案例struts011

    在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...

    struts2的上传,下载,删除文件

    在本篇中,我们将聚焦于Struts2中的文件上传、下载和删除功能,这些是Web应用中常见的需求。 1. 文件上传: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它处理了多部分表单数据。首先,你需要在`...

    struts2文件上传例子.rar

    在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...

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

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...

Global site tag (gtag.js) - Google Analytics