`
砺雪凝霜
  • 浏览: 151764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Struts2文件下载的碰到的一些问题

阅读更多

   公司项目中要用到利用Excel批量导入数据和并且有一个Excel模板下载功能,数据导入倒没什么问题,网上

例子一大推,下载的时候一开始后缀名一直是action,经过很久才搞定,

 

一、action的xml配置

<!--文件下载 -->
  <action name="downloadOBS" class="cn.fulong.omp.web.action.ServiceProcessManagerAction" method="downloadOBS">
   <param name="directory"></param><!-- 一定要是action中的成员变量,并提供set和get方法 -->
      <result name="success" type="stream">
          <param name="contentType">text/plain</param>
          <param name="inputName">inputStream</param><!-- 指定返回流的方法为getInputStream()-->
          <param name="contentDisposition">
                attachment;filename="${filename}"<!-- filename为下载后的文件名,一定要是action中的成员变量,并提供set和get方法,这步决定了你的文件名的后缀,后缀名为action时,一定是在这里错了-->
          </param>
          <param name="bufferSize">2014</param>
      </result>
  </action>

二、action的写法

private String filename;
private String directory;

 

 public String downloadOBS() {
  return SUCCESS;
 }
 public InputStream getInputStream() throws IOException {
  String separator = java.io.File.separator;
  String fileName = "";
  // 导入线下服务成果的Excel表格数据表模板文件名称
          filename = "服务成果.xlsx";
  try {
   filename = new String(filename.getBytes(), "ISO-8859-1");

   //这里要转码,如果是文件名是中文就会乱码,文件名是英文的话,这步不写也没问题
   fileName = Platform.getInstance().getRealPath() + separator
     + "file" + separator + "fdsasaggg.xlsx";

//拿到文件名,该文件放在根路径下的file文件夹下
   System.out.println(fileName);
   InputStream is = new FileInputStream(fileName);

//拿到文件流
   if (is != null) {
    return is;
   } else {
    return null;
   }
  } catch (Exception e) {
   return null;
  }
 }

public get....

public set....

分析:

问题一:下载后的文件名称为.action

     刚接触Struts2下载的孩子很容易就出现下载后的文件名为.action的情况,我当时是因为没有理清文件下载的流程,被filename和fileName给搞乱了,filename是指下载后的文件名,fileName是指项目中文件的名称(绝对路径),作用是来生成文件流的。

问题二:中文乱码问题,下载后的文件只出现文件后缀名

     加上filename = new String(filename.getBytes(), "ISO-8859-1"); 因为表单提交的时候默认用的编码是ISO-8859-1

   

 

 

分享到:
评论

相关推荐

    Struts2下载文件点击取消出现的异常解决办法(含demo)

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...

    uploadify3与struts2结合实现有进度条文件上传实例

    毕竟是第一次用 不是很熟悉 希望有人发现问题可以交流一下"&gt;这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 ...

    解决struts2下载异常的jar包 struts2-sunspoter-stream-1.0.jar

    有关struts2下载组件的具体介绍我就在此略过了,看此文的同志想必大多是碰到这样让人很是不爽的问题。 下面就将该问题的最终解决办法介绍如下。 问题概要: 在struts2中使用result里type="stream"的结果类型时,...

    Struts2 in action中文版

    11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...

    struts2.5.16升级过程中遇到问题详述

    此记录struts2.5.16在升级过程中基本遇到所有的问题,包括jar的引进,以及配置文件的写法。

    Struts中 下载时点击取消异常解决包

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常,非常让人头疼,现在总结了一些问题的解决方案,有实例。

    Struts2漏洞检查工具2018版.exe

    增加S2-057 Struts 2.3 to 2.3.34,Struts 2.5 to 2.5.16 此漏洞影响范围非常小,要求配置条件比较苛刻,同时,一些特定版本没有看到有沙盒绕过,说以,目前exp只是基于S2-045改写的,所以exp并不是所有版本都能用,...

    jQuery EasyUI与Struts2的整合—属性驱动篇

    如果你是用模型驱动,或者是直接把属性写在action里面,你不会碰到我遇到的那么多问题。 但是你用模型驱动好吗,如果一个页面需要处理多个对象的时候怎么办。 如果你直接把属性写在action里面,当一个对象有20个...

    遇到struts.xml配置文件没有提示信息

    struts2如何配置找到 struts下的提示信息

    Bug管理系统 struts2+sping2.5+hibernate3(2-2)

    注:本程序分两部分上传,需要两个文件同时才能解压。...本程序尽量包含了开发当中遇到的一些问题及解决方案。同时欢迎广大网友到作者的群内讨论交流。 本程序适合于想学习JAVA技术或框架技术的初学者阅读。

    struts2-sunspoter-stream-1.0.jar

    在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),附件中使用struts2-sunspoter-stream-1.0.jar插件可...

    深入浅出Struts2(附源码)

    本书是广受赞誉的Struts 2优秀教程,它全面而深入地阐述了Struts 2的各个特性,并指导开发人员如何根据遇到的问题对症下药,选择使用最合适的特性。作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,...

    Struts2漏洞检查工具2018版.zip

    struts2漏洞exp利用工具, 2018-08-24: 增加S2-057 Struts 2.3 to 2.3.34,Struts 2.5 to 2.5.16 此漏洞影响范围非常小,要求配置条件比较苛刻,同时,一些特定版本没有看到有沙盒绕过,说以,目前exp只是基于S2-...

    Struts2 中的一个小问题

    最近在学struts2,遇到了个小问题,就是在struts.xml文件中提示下列warnings: The file cannot be validated as the host "struts.apache.org" is currently unreachable 在网上找了很久,没有找到解决方法,后来...

    Struts2漏洞检查工具2017版

    2017-07-07: 增加S2-048 Struts 2.3.X 支持检查官方示例struts2-...最近遇到s19这个debug模式开启导致代码执行,这个有点少,但还是有一些,为了方便大家把13版本修改了一下。可以利用这个漏洞执行命令、上传shell。

    struts2+Hibernate+Spring学习示例

    struts2+Hibernate+Spring 示例 目的:构建struts2开发框架 使用 Hibernate作为持久层操作 采用Spring容器 适合:有一定struts2基础 对Hibernate有一定的了解 对Spring有一定的知识 实现:通过对用户信息的基本...

    Struts2的配置文件方法小结

    最近正在学习Struts2,在配置文件中遇到好多标签,各种意义不同。下面这篇文章就来给大家介绍关于Struts2配置文件的相关资料,文中通过图文介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧。

    Struts2漏洞利用工具2017版V1.8

    2017-03-21: 增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样...最近遇到s19这个debug模式开启导致代码执行,这个有点少,但还是有一些,为了方便大家把13版本修改了一下。可以利用这个漏洞执行命令、上传shell。

Global site tag (gtag.js) - Google Analytics