公司项目中要用到利用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
相关推荐
在标题提到的场景中,开发者可能遇到了在使用Myeclipse 6.5集成开发环境,JDK1.6和Tomcat 6.0服务器环境下,通过Struts2进行文件下载时,中文文件名显示为乱码的问题。 中文乱码是由于字符编码不一致导致的,尤其是...
在Struts2中,文件下载可以通过重定向或流式下载实现。重定向方式简单,但不适用于大文件。流式下载则更推荐,它允许设置响应头控制下载速度和文件名。在Action中,读取文件内容并设置到HttpServletResponse的...
5. **异常处理**:文件上传可能遇到各种问题,如大小限制、文件类型限制等,因此需要进行错误检查和异常处理。 **二、文件下载** 1. **Action**:创建一个处理文件下载的Action,需要获取要下载文件的服务器路径或...
在Struts2中,文件上传和下载是常见的功能,对于用户交互和数据交换至关重要。这篇内容将深入讲解如何在Struts2中实现多文件的上传和下载。 1. **文件上传** 文件上传在Web应用中常常用于让用户提交各种类型的文件...
在Web开发中,使用Struts2框架进行文件下载操作时,经常遇到的一个问题是文件名中的中文字符显示为乱码。这主要是因为浏览器和服务器之间的编码不一致所导致的。为了确保用户能够正确地看到文件名中的中文字符,需要...
在处理文件上传和下载时,Struts2可能会遇到一个常见的问题,即中文文件名的乱码问题。这是因为不同的系统和软件对字符编码的支持不同,尤其是涉及到网络传输时,编码的兼容性尤为重要。 在“struts2 中文文件名...
在这个“struts2文件上传例子(支持大文件)”中,我们将探讨如何利用Struts2框架实现文件上传功能,尤其是处理大文件的能力。 在Web应用中,文件上传是一项常见的需求,例如用户可能需要上传照片、文档或视频等。...
本篇文章将详细介绍如何在Struts2中实现文件下载,并解决中文文件名的编码问题。 首先,我们需要在`struts.xml`配置文件中定义一个Action,这个Action将会处理文件下载的请求。例如,我们可以创建一个名为`...
1. **.struts2配置**:在Struts2框架中,需要在`struts.xml`配置文件中添加相应的action配置,声明文件上传的处理方法。通常,你需要设置`<result>`类型为`stream`,以便处理上传的文件。 2. **Action类**:创建一...
总结一下,当遇到Struts2配置文件位置更改问题时,应遵循以下步骤: 1. 确保新的`struts.xml`文件路径是相对于`WEB-INF/classes`目录的。 2. 更新`web.xml`中的`StrutsPrepareAndExecuteFilter`过滤器配置,通过`...
Struts2是一个流行的Java Web框架,它为开发者提供了一种优雅的方式来构建可维护、可扩展且结构清晰的Web应用程序。...理解源码有助于你更好地掌握Struts2的工作原理,从而在遇到问题时能更高效地定位和解决。
在实际应用中,你还需要考虑文件上传可能遇到的问题,如文件大小超出限制、文件类型不合法等。这些可以通过自定义异常处理或在Action类中抛出异常来实现。 8. **安全注意事项** 在处理文件上传时,确保对文件名...
本篇将重点讲解如何利用Java和Struts框架实现文件的上传与下载功能。 一、文件上传 1. **配置Struts2核心配置文件**: 在`struts.xml`中添加上传配置,声明一个`action`用于处理文件上传请求。例如: ```xml ...
本项目实现了使用Struts2进行文件批量上传的功能,这涉及到几个关键的技术点,包括文件上传组件的选择、前端表单设计、后端处理逻辑以及存储策略。 1. **文件上传组件**:在Struts2中,我们通常使用`Commons ...
2. **配置文件(Configuration Files)**:Struts2的配置文件通常包括struts.xml或struts.properties,它们定义了Action、结果类型、拦截器栈等。通过配置文件,开发者可以指定Action与URL的映射关系,设置默认结果...
在Struts2中实现一个简单的下载功能,是开发者经常遇到的需求,这通常涉及到HTTP响应、流处理以及文件操作等核心概念。下面我们将深入探讨如何在Struts2中实现这个功能。 首先,理解MVC模式对于Web应用开发至关重要...
在使用 Struts2 进行开发时,开发者可能会遇到各种问题,这里我们将详细探讨一些典型的问题及其解决方法。 1. **警告:Settings: Could not parse struts.locale setting, substituting default VMlocale** 这个...
在Struts2框架中,开发Web应用时常会遇到用户下载文件的需求。然而,在这个过程中,如果用户在文件下载弹窗出现后选择取消下载,后台可能会出现异常,这通常是由于流处理不当导致的。本文将详细解析这个问题,并提供...
Struts2 文件上传时遇到“类型不允许的问题”通常与文件扩展名验证有关,这涉及到Struts2框架的安全配置。在Struts2中,为了防止恶意用户上传不安全的文件(如脚本或可执行文件),系统会设定允许上传的文件类型。当...
Struts2是一个强大的Java web框架,它为开发者提供了一种优雅的方式来构建可维护、结构清晰的Web应用程序。在Struts2中,文件上传和...记得在练习过程中,遇到问题可以参考Struts2的官方文档或者社区资源来寻求解答。