`
舟舟同学
  • 浏览: 45507 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

struts2开发9--多文件上传、下载和删除

阅读更多

在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>

 到这里多文件上传,下载和删除功能完成了。

 

1
6
分享到:
评论

相关推荐

    struts2文件上传组件commons-fileupload-1.2.1.jar

    在Struts2中,文件上传功能是通过第三方库来实现的,其中最常用的就是Apache Commons FileUpload和Apache Commons IO。这里提到的"commons-fileupload-1.2.1.jar"和"commons-io-1.4.jar"就是这两个库的特定版本。 *...

    struts2文件上传jar

    这个压缩包包含了实现Struts2文件上传所需的全部jar包,这些库文件对于理解和实现文件上传功能至关重要。 首先,我们要了解Struts2文件上传的基本流程。当用户通过表单提交包含文件输入字段的请求时,Struts2框架会...

    struts2文件上传

    Struts2 文件上传是Web开发中的一个重要功能,它允许用户从他们的本地计算机向服务器传输文件。在Struts2框架中,文件上传是通过特定的拦截器实现的,这些拦截器处理了文件上传请求并提供了安全性和大小限制。下面将...

    struts2 文件下载需要的架包 commons-fileupload-1.2 commons-io-1.3.2

    在Struts2中,处理文件上传和下载是常见的需求。为了实现这一功能,开发人员通常需要依赖两个关键的第三方库:Apache Commons FileUpload和Apache Commons IO。 Apache Commons FileUpload是一个专门用于处理HTTP...

    struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序

    在"struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序"这个项目中,开发者使用了Uploadify 3.2版本,这是一个支持异步上传和批量上传的插件,能够很好地与Struts2框架整合。以下是实现这一功能的关键...

    struts2文件上传与下载源码-包含超出指定文件大小提示

    struts2文件的上传与下载,包含超出指定文件大小之后的提示。更多详细内容,请参考博客:http://blog.csdn.net/qq_20889581/article/details/52838848

    struts框架写的文件上传下载系统

    在本系统中,"struts框架写的文件上传下载系统"是利用Struts框架来实现文件的上传和下载功能,提供了一个平台让用户能够注册成为会员后进行文件操作。 首先,让我们深入理解Struts框架的核心概念: 1. **模型...

    Struts2(json-plugin) + Spring2 + ExtJS2.2 开源网络硬盘系统

    综上所述,这个开源项目展示了如何结合Struts2、Spring2和ExtJS2.2来创建一个功能丰富的网络硬盘系统,涉及了后端业务逻辑处理、前端UI展示、以及数据交互等多个方面,对于学习和理解Java Web开发具有很高的参考价值...

    【jar包】Struts 2文件上传、下载、显示

    在Struts 2中,处理文件上传和下载是常见的需求,尤其是在用户交互丰富的Web应用中。为了实现这些功能,开发者需要依赖特定的库,如Apache Commons IO和Apache Commons FileUpload。这两个jar包是Struts 2文件操作的...

    Struts2 文件上传,下载,删除(四十一)

    在本教程中,我们将深入探讨Struts2中关于文件上传、下载和删除的核心概念和技术。这些功能在现代Web应用程序中至关重要,因为用户经常需要上传文件(如图片、文档等),或者从服务器下载资源。 **1. 文件上传** ...

    spring+struts+hibernate实现文件的上传和下载

    【Spring+Struts+Hibernate 实现文件上传和下载】 在 J2EE 开发中,文件的上传和下载是一项基础但重要的功能。SSH(Struts、Spring、Hibernate)框架提供了便捷的方式来处理这一问题,无需依赖像 SmartUpload 或 ...

    java 网盘_文件上传下载 struts2

    开发者需要配置Struts2的`struts.xml`配置文件以启用文件上传,并指定允许的最大文件大小和数量。 3. **文件下载** 文件下载通常通过生成一个HTTP响应,设置合适的Content-Type和Content-Disposition头来实现。在...

    用struts2实现的文件上传与下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。本项目通过Struts2实现了文件的上传和下载功能,这...总之,理解和掌握Struts2的文件上传下载机制对于Java Web开发来说是一项重要的技能。

    Struts2+Hibernate实现文件上传

    在Struts2的配置文件中,我们需要定义一个对应的action配置,设置input和result,以便正确处理文件上传请求和响应。 接下来,涉及到的是Hibernate的部分。当图片文件被上传并保存在服务器上后,我们可能需要将文件...

    ssh框架用struts2 hibernate实现图片的上传源码

    以上就是SSH框架中使用Struts2和Hibernate实现图片上传的主要知识点,涵盖了Web请求处理、ORM框架、文件上传、数据库操作以及前端交互等多个方面。实际项目开发时,还需要结合具体的业务需求和安全规范进行详细设计...

    Struts1万能文件操作组件

    总之,“Struts1万能文件操作组件”是Struts1框架下处理文件操作的强大工具,它简化了文件上传、下载和删除等任务,提高了开发效率,同时也为开发者提供了更多自定义的空间。通过深入学习和理解提供的文档和API,...

    Struts2上传下载

    综上所述,理解和掌握Struts2的文件上传和下载机制,以及如何处理中文乱码和文件类型识别问题,对于开发高效、稳定的Web应用至关重要。通过细心的配置和代码编写,可以确保文件操作功能的顺畅运行。

    Struts2文件上传

    Struts2文件上传是Web开发中的一个重要功能,它允许用户从客户端向服务器传输文件。Struts2是一个基于MVC设计模式的Java web框架,它提供了丰富的功能来处理表单提交,包括文件上传。在这个场景中,我们将深入探讨...

    Struts2项目struts2 上传 下载 项目

    在这个“Struts2 上传下载项目”中,我们将深入探讨如何利用Struts2实现文件上传与下载功能,并结合MySQL数据库、DAO(数据访问对象)层以及MVC架构来构建一个完整的应用。 1. **Struts2框架基础** Struts2的核心...

Global site tag (gtag.js) - Google Analytics