`
舟舟同学
  • 浏览: 44460 次
  • 性别: 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文件上传与下载源码-包含超出指定文件大小提示

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

    JAVA程序开发大全---上半部分

    12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts 2.0的Action类 218 12.2.5 Struts 2.0中的国际化编程 221 12.2.6 创建基于POJO的Action 223 12.3...

    java_jsp项目源码_内容管理系统(hibernate3+struts2+spring2).rar

    5. 文件管理:提供文件的上传、下载和删除功能,支持多种文件格式,实现文件的权限控制。 6. 系统设置:提供系统的基本设置,如网站名称、域名、备案号等,实现系统的日志管理和数据库备份恢复功能。 此外,该项目...

    基于Struts+Spring+Hibernate+MySQL+Tomcat的中小企业办公自动化系统(源程序+开题报告+论文)

    基于Struts+Spring+Hibernate+MySQL+Tomcat的... (9) 文件管理模块 本模块主要是对系统注册用户所上传文件的管理,可以查看所上传文件的相关信息,并且可以下载,而对所上传文件的删除则只有系统管理员才有权限。

    前后台管理系统模板源代码 java语言 ssh开发框架 Spring+Struts+Hibernate

    开发技术:Spring3.2,Struts2.3,Hibernate3,bootstrap样式,bootstrap脚本,jquery脚本,layer弹窗组件,ueditor富文本框,webuploader文件上传组件,echarts图表展示组件等技术; 二、项目说明 本系统实现了...

    Guice2.0+Hibernate3.2+warp-persist-2.0+Struts2+JPA

    轻量级的Guice2.0代替了Spring,速度更快,项目体积更小,Hibernate3.2与JPA的结合使用代替了传统的配置文件,使Hibernate的开发更简单,本项目基本上是零配置开发,由于我只能上传小于15M的文件,故JAR被我删除了,...

    ssh_crm1.rar

    - 上传文件(struts2实现上传) (2)联系人列表 (3)修改联系人 (4)级联删除(删除客户,把客户里面所有联系人也删除) 第三个 客户拜访管理模块 (1)新增客户拜访 (2)客户拜访列表 - 解决问题:...

    李兴华Java Web开发实战经典(高清版) Part2

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    ERP系统课程设计-Java-360网盘-课程设计

    实现文件上传到服务器,从服务器上下载,还有对文件的基本操作,删除,新建以及模糊查询等等。 通过实验我对文件的基本操作有了更进一步的了解,基本掌握了文件的基本操作。同时对js,jQuery以及ajax的一些主流前端...

    SSH(struts2.0.16+spring2.5+hibernate3.2)简单示例 MyEclipse7 sqlserver2005 附数据库

    struts2最新版本,内含APACHE官网下载struts核心jar包,附数据库文件,MyEclipse 7.0开发,使用struts2 iterator标签,绝对是初学SSH的绝佳范例,互联网上仅此一份,没有更全的 注:如果自己用tomcat重新部署,需...

    struts简单实现用户注册(最新修订)

    8.ajax的文件上传 9.批量删除 10.token控制刷新提交 11.简单的excl报表 12.简单的download 13.简单的listener 说明:有志同道合之士,容忍下我的不入流的代码,看看我的实现上出在什么地方 开发环境:...

    java_jsp项目源码_移动ssh项目(struts+spring+hibernate+oracle)130222.rar

    8. 文件管理:提供文件的上传、下载、分享和版本控制功能,支持多种文件格式,方便企业内部的文件交换和协作。 此外,项目还提供了丰富的报表和统计功能,帮助企业领导层进行数据分析和决策支持。同时,项目具有...

    李兴华 java_web开发实战经典 源码 完整版收集共享

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 下

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    MLDN+李兴华+Java+Web开发实战经典.part3.rar )

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    李兴华 Java Web 开发实战经典_带源码_高清pdf 带书签 上

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    李兴华Java Web开发实战经典.pdf (高清版) Part1

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

    JSP基于SSH2高校学生成绩管理系统+源代码+文档说明+数据库.zip

    技术框架SSH2: Struts2 + Spring + Hibernate 主要功能: (1)学生信息管理模块:包括所有学生信息的查询(用分页列表显示)、查看某个学生的详细信息、删除某学生信息、修改某学生信息以及学生信息的录入等子功能 ...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    李兴华 Java Web 开发实战经典 高清扫描版Part3

    1.5、Struts开发框架 1.6、本章摘要 1.7、开发实战讲解 第2章 HTML、JavaScript简介 2.1、服务器与浏览器 2.2、HTML简介 2.2.1、HTML元素概览 2.2.2、创建显示WEB页 2.2.3、创建表单WEB页 2.3、JavaScript...

Global site tag (gtag.js) - Google Analytics