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

本文共 5805 字,大约阅读时间需要 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

    

文件上传

View Code

 

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

    

下载列表

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

 

    实现效果:

    error.jsp  success.jsp略

 

转载于:https://www.cnblogs.com/loveincode/p/5421378.html

你可能感兴趣的文章
(第一组_GNS3)自反ACl
查看>>
hdu--1258--Sum It Up(Map水过)
查看>>
Spring @DeclareParents 的扩展应用实例
查看>>
VS2012更新Update1后帮助查看器无法打开
查看>>
【Weiss】【第03章】练习3.9:大整数运算包
查看>>
Android 文件的读取和写入
查看>>
机器学习-加权采样算法简介
查看>>
高校表白APP-冲刺第四天
查看>>
outlook 设置163邮箱
查看>>
Flash设置(各种版本浏览器包括低版本IE)
查看>>
mysql优化——show processlist命令详解
查看>>
Solr服务器搭建
查看>>
画世界怎么用光影_世界绘画经典教程:水彩光影魔法教程
查看>>
matlab提取caffe模型,深度學習Caffe實戰筆記(10)Windows Caffe使用MATLAB接口提取和可視化特征...
查看>>
win+rsync+php,跨平台的fswatch+rsync同步备份
查看>>
vue2 cdn 加载html,vue项目中使用CDN加载
查看>>
数组转集合踩坑
查看>>
node.js的异步I/O、事件驱动、单线程
查看>>
vue cli3 子目录问题
查看>>
github.com访问慢解决
查看>>