博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 框架 之 文件上传下载案例
阅读量:5818 次
发布时间:2019-06-18

本文共 5731 字,大约阅读时间需要 19 分钟。

Struts 框架 文件上传

  1. 先准备 Struts 环境 (我使用的是struts 2.3.4版本)

    导jar包:

      jar包的具体作用在前面的文章有讲。

    

    配置 web.xml

Struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Struts2
/*

    然后开始开发action 

    上传action类:FileUpload  src/com.yif.fileupload

    jsp : <input type="file" name="file1">

    action类中使用  File file1 和 jsp中名字要相同

    file1FileName  file1ContentType 中的file1 需要与jsp中对应

import java.io.File;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileUpload extends ActionSupport {    // 对应表单:    private File file1;    // 文件名    private String file1FileName;    // 文件的类型(MIME)    private String file1ContentType;    public void setFile1(File file1) {        this.file1 = file1;    }    public void setFile1FileName(String file1FileName) {        this.file1FileName = file1FileName;    }    public void setFile1ContentType(String file1ContentType) {        this.file1ContentType = file1ContentType;    }    @Override    public String execute() throws Exception {        /****** 拿到上传的文件,进行处理 ******/        // 把文件上传到upload目录        // 获取上传的目录路径        String path = ServletActionContext.getServletContext().getRealPath(                "/upload");        // 创建目标文件对象        File destFile = new File(path, file1FileName);        // 把上传的文件,拷贝到目标文件中        FileUtils.copyFile(file1, destFile);        return SUCCESS;    }}

 

    开发下载文件 action类: DownAction  src/com.yif.fileupload

    list方法 将上传文件的路径下的文件 放在list中写道请求中。

package com.yif.fileupload;import java.io.File;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Map;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownAction extends ActionSupport {        /*************1. 显示所有要下载文件的列表*********************/    public String list() throws Exception {        //得到upload目录路径        String path = ServletActionContext.getServletContext().getRealPath("/upload");        // 目录对象        File file  = new File(path);        // 得到所有要下载的文件的文件名        String[] fileNames =  file.list();        // 保存        ActionContext ac = ActionContext.getContext();        // 得到代表request的map (第二种方式)        Map
request= (Map
) ac.get("request"); request.put("fileNames", fileNames); return "list"; } /*************2. 文件下载*********************/ private String fileName; public void setFileName(String fileName) { // 处理传入的参数中问题(get提交) try { fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } // 把处理好的文件名,赋值 this.fileName = fileName; } //2. 下载提交的业务方法 (在struts.xml中配置返回stream) public String down() throws Exception { return "download"; } // 3. 返回文件流的方法 public InputStream getAttrInputStream(){ return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + fileName); } // 4. 下载显示的文件名(浏览器显示的文件名) public String getDownFileName() { // 需要进行中文编码 try { fileName = URLEncoder.encode(fileName, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return fileName; } }

 

    写upload.xml    src/com.yif.fileupload

    下载配置详细:

 

    
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024     

 

txt,jpg,jar
/e/success.jsp
/e/error.jsp
/e/list.jsp
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024

 

    配置struts.xml  src/struts.xml

 

    upload.jsp页面(前端采用Bootstrap框架)   WebRoot/e/upload.jsp

    

文件上传

 

    list.jsp页面                WebRoot/e/list.jsp

    

下载列表

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
编号 文件名 操作
${vs.count } ${fileName }
下载

 

    实现效果:

    error.jsp  success.jsp略

转载地址:http://fyhbx.baihongyu.com/

你可能感兴趣的文章
JDBC二查询(web基础学习笔记八)
查看>>
监听器(web基础学习笔记二十二)
查看>>
802.11 学习笔记
查看>>
Leetcode-Database-176-Second Highest Salary-Easy(转)
查看>>
Ubuntu12.04LTS安装好后是空白桌面的解决步骤(更新显卡驱动)
查看>>
poj-3696 The Luckiest number
查看>>
[Dynamic Language] Python定时任务框架
查看>>
Furure的简单介绍和使用
查看>>
CSS3 网格布局(grid layout)基础知识 - 隐式网格自己主动布局(grid-auto-rows/grid-auto-columns/grid-auto-flow)...
查看>>
构建Docker Compose服务堆栈
查看>>
最小角回归 LARS算法包的用法以及模型参数的选择(R语言 )
查看>>
CentOS7下zip解压和unzip压缩文件
查看>>
Hadoop生态圈-Kafka常用命令总结
查看>>
如何基于Redis Replication设计并实现Redis-replicator?
查看>>
Linux 环境下 PHP 扩展的编译与安装 以 mysqli 为例
查看>>
openmp在图像处理上面的运用
查看>>
Key Components and Internals of Spring Boot Framework--转
查看>>
基于Bootstrap的jQuery开关按钮插件
查看>>
修改linux文件权限命令:chmod
查看>>
如何删除PHP数组中的元素,并且索引重排(unset,array_splice)?
查看>>