`
砺雪凝霜
  • 浏览: 156631 次
  • 性别: 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文件下载(解决了中文乱码问题)

    在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行文件下载时,中文文件名显示为乱码的问题。 中文乱码是由于字符编码不一致导致的,尤其是...

    Struts2文件上传下载和表单重复提交问题

    在Struts2中,文件下载可以通过重定向或流式下载实现。重定向方式简单,但不适用于大文件。流式下载则更推荐,它允许设置响应头控制下载速度和文件名。在Action中,读取文件内容并设置到HttpServletResponse的...

    struts1 文件上传 文件下载

    5. **异常处理**:文件上传可能遇到各种问题,如大小限制、文件类型限制等,因此需要进行错误检查和异常处理。 **二、文件下载** 1. **Action**:创建一个处理文件下载的Action,需要获取要下载文件的服务器路径或...

    struts2多文件上传和下载

    在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...

    Struts2下载文件中文乱码处理

    在Web开发中,使用Struts2框架进行文件下载操作时,经常遇到的一个问题是文件名中的中文字符显示为乱码。这主要是因为浏览器和服务器之间的编码不一致所导致的。为了确保用户能够正确地看到文件名中的中文字符,需要...

    struts2 中文文件名文件下载

    在处理文件上传和下载时,Struts2可能会遇到一个常见的问题,即中文文件名的乱码问题。这是因为不同的系统和软件对字符编码的支持不同,尤其是涉及到网络传输时,编码的兼容性尤为重要。 在“struts2 中文文件名...

    struts2文件上传例子(支持大文件)

    在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...

    Struts2中实现文件下载(修正中文问题).pdf

    本篇文章将详细介绍如何在Struts2中实现文件下载,并解决中文文件名的编码问题。 首先,我们需要在`struts.xml`配置文件中定义一个Action,这个Action将会处理文件下载的请求。例如,我们可以创建一个名为`...

    struts2文件上传实例

    1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`&lt;result&gt;`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...

    struts2配置文件改变位置问题

    总结一下,当遇到Struts2配置文件位置更改问题时,应遵循以下步骤: 1. 确保新的`struts.xml`文件路径是相对于`WEB-INF/classes`目录的。 2. 更新`web.xml`中的`StrutsPrepareAndExecuteFilter`过滤器配置,通过`...

    Struts2文件上传源码

    Struts2是一个流行的Java Web框架,它为开发者提供了一种优雅的方式来构建可维护、可扩展且结构清晰的Web应用程序。...理解源码有助于你更好地掌握Struts2的工作原理,从而在遇到问题时能更高效地定位和解决。

    简单易懂的struts2文件上传

    在实际应用中,你还需要考虑文件上传可能遇到的问题,如文件大小超出限制、文件类型不合法等。这些可以通过自定义异常处理或在Action类中抛出异常来实现。 8. **安全注意事项** 在处理文件上传时,确保对文件名...

    java结合struts的上传下载文件

    本篇将重点讲解如何利用Java和Struts框架实现文件的上传与下载功能。 一、文件上传 1. **配置Struts2核心配置文件**: 在`struts.xml`中添加上传配置,声明一个`action`用于处理文件上传请求。例如: ```xml ...

    struts2 实现文件批量上传

    本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...

    Struts2.rar文件

    2. **配置文件(Configuration Files)**:Struts2的配置文件通常包括struts.xml或struts.properties,它们定义了Action、结果类型、拦截器栈等。通过配置文件,开发者可以指定Action与URL的映射关系,设置默认结果...

    struts2简单下载功能

    在Struts2中实现一个简单的下载功能,是开发者经常遇到的需求,这通常涉及到HTTP响应、流处理以及文件操作等核心概念。下面我们将深入探讨如何在Struts2中实现这个功能。 首先,理解MVC模式对于Web应用开发至关重要...

    struts2开发遇到的问题

    在使用 Struts2 进行开发时,开发者可能会遇到各种问题,这里我们将详细探讨一些典型的问题及其解决方法。 1. **警告:Settings: Could not parse struts.locale setting, substituting default VMlocale** 这个...

    解决Struts2中下载文件时点击取消按钮后台报错问题

    在Struts2框架中,开发Web应用时常会遇到用户下载文件的需求。然而,在这个过程中,如果用户在文件下载弹窗出现后选择取消下载,后台可能会出现异常,这通常是由于流处理不当导致的。本文将详细解析这个问题,并提供...

    struts2文件上传,一直报类型不允许的问题

    Struts2 文件上传时遇到“类型不允许的问题”通常与文件扩展名验证有关,这涉及到Struts2框架的安全配置。在Struts2中,为了防止恶意用户上传不安全的文件(如脚本或可执行文件),系统会设定允许上传的文件类型。当...

    Struts2的文件上传下载.rar

    Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来构建可维护、结构清晰的Web应用程序。在Struts2中,文件上传和...记得在练习过程中,遇到问题可以参考Struts2的官方文档或者社区资源来寻求解答。

Global site tag (gtag.js) - Google Analytics