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文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
本案例将重点讲解如何在Struts中实现文件的上传与下载,并支持多文件上传。 一、文件上传 1. 配置Struts.xml 首先,我们需要在`struts.xml`配置文件中添加相应的action配置,以处理文件上传请求。例如: ```xml ...
本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...
在这个"struts2上传和下载文件详细源码"中,我们可以深入理解Struts2如何处理文件上传和下载操作。 1. 文件上传: 在Struts2中,文件上传主要依赖于Apache的Commons FileUpload库。首先,需要在struts.xml配置文件...
Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...
在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...
3.Struts2进行下载处理,能对上传的所有文件进行下载(多个) 4.文件保存的名称UUID生成,不过显示并下载的名称都是原文件名称 (通过UploadFiles处理) 5.对配置文件中的路径可以进行动态读取(不重启服务器) ...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...
在Struts2中,文件上传功能是一个常用特性,尤其在处理用户提交的多个文件时。本文将详细讲解如何使用Struts2进行多个文件的上传,重点是使用List集合进行上传。 首先,要实现Struts2的文件上传,必须引入必要的...
本文将深入探讨如何使用Struts2和ExtJS3实现单文件和多文件的上传功能。 首先,我们要理解文件上传的基本流程。在Web应用中,用户通过浏览器选择本地文件,然后这些文件的数据被封装到HTTP请求中发送到服务器。...
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
在基于Struts2的文件上传下载功能中,它提供了处理用户上传文件和提供文件下载的服务。这个完整的源代码是实现这些功能的一个实例,经过测试确保了其正确性和可用性。 首先,我们要理解Struts2中的Action类。Action...
在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人照片、文档或者其他类型的文件。在这个"Struts2之struts2文件上传详解案例struts011"中,我们将深入探讨如何实现这一功能。 首先,我们需要了解...
在本篇中,我们将聚焦于Struts2中的文件上传、下载和删除功能,这些是Web应用中常见的需求。 1. 文件上传: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它处理了多部分表单数据。首先,你需要在`...
在“struts2文件上传例子.rar”这个项目中,开发者已经使用Struts2.0框架实现了一个简单的文件上传功能。MyEclipse 6.6是一个集成开发环境,支持Java EE项目开发,可以直接导入该项目进行运行和调试。 首先,我们...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括文件上传和下载。在Struts2中处理文件上传和下载是常见的需求,对于构建交互式的Web应用来说至关重要。以下将详细介绍Struts2中如何实现这两个...