在struts2中对多文件的上传、下载都提供了很好的支持,下面介绍一种方法实现多文件上传,下载和删除。具体代码如下:
第一步:创建上传文件Action
多文件文件上传和删除的FileUpArrayAction代码如下:
package cn.test.fileUp;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUpArrayAction extends ActionSupport {
private File[] upload;
private String[] uploadContentType;
private String[] uploadFileName;
private String savePath;
private Date upTime;
private String test[];
private String deletePath;
public String[] getTest() {
return test;
}
public void setTest(String[] test) {
this.test = test;
}
private static void upLoad(File source,File target) throws IOException
{
InputStream inputStream=null;
OutputStream outPutStream=null;
try {
inputStream=new BufferedInputStream(new FileInputStream(source));
outPutStream=new BufferedOutputStream(new FileOutputStream(target));
byte[] buffer=new byte[1024];
int length=0;
while((length=inputStream.read(buffer))>0)
{
outPutStream.write(buffer, 0, length);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
if (null!=inputStream)
{
inputStream.close();
}
if(null!=outPutStream)
{
outPutStream.close();
}
}
}
public String ArrayfileUpUI()
{
return "ArrayfileUpUI";
}
public String execute() throws IOException
{
for(int i=0;i<upload.length;i++)
{
String path1=ServletActionContext.getServletContext().getRealPath(savePath);
//System.out.println(path1);
File f=new File(path1);
if(!f.exists())
{
f.mkdirs();
}
String path=ServletActionContext.getServletContext().getRealPath(savePath)+"\\"+this.uploadFileName[i];
File target=new File(path);
upLoad(this.upload[i],target);
}
String path2=ServletActionContext.getServletContext().getRealPath(savePath);
File file=new File(path2);
test=file.list();
return "success";
}
public String delete() throws UnsupportedEncodingException
{
deletePath=new String(deletePath.getBytes("ISO8859-1"), "UTF8");
String path3=ServletActionContext.getServletContext().getRealPath(savePath)+"\\"+deletePath;
File f = new File(path3); // 输入要删除的文件位置
//System.out.println(path3);
if(f.exists())
f.delete();
return "deletesuccess";
}
public String FileList()
{
String path2=ServletActionContext.getServletContext().getRealPath(savePath);
File file=new File(path2);
test=file.list();
return "success";
}
public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public Date getUpTime() {
upTime=new Date();
return upTime;
}
public void setUpTime(Date upTime) {
this.upTime = upTime;
}
public String getDeletePath() {
return deletePath;
}
public void setDeletePath(String deletePath) {
this.deletePath = deletePath;
}
}
第二步:上传界面ArrayfileUpUI.jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<s:form action="Arrayfile_execute" namespace="/" enctype="multipart/form-data">
<s:file name="upload" label="文件1"></s:file>
<s:file name="upload" label="文件2"></s:file>
<s:file name="upload" label="文件3"></s:file>
<s:submit value="确定"></s:submit>
</s:form>
</html>
第三步:显示上传文件列表fsuccess.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:iterator value="test" status="st" var="doc">
<tr>
<td><a href="Download.action?downPath=<s:property value="#doc"/>">
<s:property value="test[#st.getIndex()]"/>
</a></td>
<td><a href="delete.action?deletePath=<s:property value="#doc"/>" onclick="return confirm('确定要删除吗')">删除 </a></td>
<td><s:date name="upTime" format="yyyy-MM-dd HH:mm:ss"/></td>
</tr>
</s:iterator>
</html>
第四步:上传文件和删除文件所需配置的struts.xml文件内容
<action name="Arrayfile_*" class="cn.test.fileUp.FileUpArrayAction" method="{1}">
<param name="savePath">/upload</param>
<result name="ArrayfileUpUI">/WEB-INF/jsp/ArrayfileUpUI.jsp</result>
<result name="success">/WEB-INF/jsp/fsuccess.jsp</result>
</action>
<action name="delete" class="cn.test.fileUp.FileUpArrayAction" method="delete">
<param name="savePath">/upload</param>
<result name="deletesuccess" type="redirectAction">Arrayfile_FileList</result>
</action>
到这里可以完成多文件上传和文件删除功能
第五步:创建下载文件处理DownloadAction,代码如下:
package cn.test.fileUp;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DownloadAction extends ActionSupport {
private String downPath;
public String getDownloadFileName() {
String downFileName=downPath;
try {
downFileName=new String(downPath.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return downFileName;
}
public String getDownPath() {
return downPath;
}
public void setDownPath(String downPath) {
this.downPath = downPath;
}
public InputStream getInputStream() throws UnsupportedEncodingException {
downPath=new String(downPath.getBytes("ISO8859-1"), "UTF8");
System.out.println("upload"+"/"+downPath);
return ServletActionContext.getServletContext().getResourceAsStream("upload"+"/"+downPath);
}
@Override
public String execute() throws Exception {
return super.execute();
}
}
第六步:下载所需配置的struts.xml文件
<action name="Download" class="cn.test.fileUp.DownloadAction">
<result type="stream">
<param name="contentType">application/msword,text/plain,application/vnd.ms-
powerpoint,application/vnd.ms-excel</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${DownloadFileName}"</param>
<param name="bufferSize">40960</param>
</result>
</action>
到这里多文件上传,下载和删除功能完成了。
相关推荐
在Struts2中,文件上传功能是通过第三方库来实现的,其中最常用的就是Apache Commons FileUpload和Apache Commons IO。这里提到的"commons-fileupload-1.2.1.jar"和"commons-io-1.4.jar"就是这两个库的特定版本。 *...
这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...
Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...
在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...
在"struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序"这个项目中,开发者使用了Uploadify 3.2版本,这是一个支持异步上传和批量上传的插件,能够很好地与Struts2框架整合。以下是实现这一功能的关键...
struts2文件的上传与下载,包含超出指定文件大小之后的提示。更多详细内容,请参考博客:http://blog.csdn.net/qq_20889581/article/details/52838848
在本系统中,"struts框架写的文件上传下载系统"是利用Struts框架来实现文件的上传和下载功能,提供了一个平台让用户能够注册成为会员后进行文件操作。 首先,让我们深入理解Struts框架的核心概念: 1. **模型...
综上所述,这个开源项目展示了如何结合Struts2、Spring2和ExtJS2.2来创建一个功能丰富的网络硬盘系统,涉及了后端业务逻辑处理、前端UI展示、以及数据交互等多个方面,对于学习和理解Java Web开发具有很高的参考价值...
在Struts 2中,处理文件上传和下载是常见的需求,尤其是在用户交互丰富的Web应用中。为了实现这些功能,开发者需要依赖特定的库,如Apache Commons IO和Apache Commons FileUpload。这两个jar包是Struts 2文件操作的...
在本教程中,我们将深入探讨Struts2中关于文件上传、下载和删除的核心概念和技术。这些功能在现代Web应用程序中至关重要,因为用户经常需要上传文件(如图片、文档等),或者从服务器下载资源。 **1. 文件上传** ...
【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...
开发者需要配置Struts2的`struts.xml`配置文件以启用文件上传,并指定允许的最大文件大小和数量。 3. **文件下载** 文件下载通常通过生成一个HTTP响应,设置合适的Content-Type和Content-Disposition头来实现。在...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。本项目通过Struts2实现了文件的上传和下载功能,这...总之,理解和掌握Struts2的文件上传下载机制对于Java Web开发来说是一项重要的技能。
在Struts2的配置文件中,我们需要定义一个对应的action配置,设置input和result,以便正确处理文件上传请求和响应。 接下来,涉及到的是Hibernate的部分。当图片文件被上传并保存在服务器上后,我们可能需要将文件...
以上就是SSH框架中使用Struts2和Hibernate实现图片上传的主要知识点,涵盖了Web请求处理、ORM框架、文件上传、数据库操作以及前端交互等多个方面。实际项目开发时,还需要结合具体的业务需求和安全规范进行详细设计...
总之,“Struts1万能文件操作组件”是Struts1框架下处理文件操作的强大工具,它简化了文件上传、下载和删除等任务,提高了开发效率,同时也为开发者提供了更多自定义的空间。通过深入学习和理解提供的文档和API,...
综上所述,理解和掌握Struts2的文件上传和下载机制,以及如何处理中文乱码和文件类型识别问题,对于开发高效、稳定的Web应用至关重要。通过细心的配置和代码编写,可以确保文件操作功能的顺畅运行。
Struts2文件上传是Web开发中的一个重要功能,它允许用户从客户端向服务器传输文件。Struts2是一个基于MVC设计模式的Java web框架,它提供了丰富的功能来处理表单提交,包括文件上传。在这个场景中,我们将深入探讨...
在这个“Struts2 上传下载项目”中,我们将深入探讨如何利用Struts2实现文件上传与下载功能,并结合MySQL数据库、DAO(数据访问对象)层以及MVC架构来构建一个完整的应用。 1. **Struts2框架基础** Struts2的核心...