package com.dreamwin.cclib.naga.view;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dreamwin.statis.StartUp;
/**
* 输出文件视图
*
*
* @author niuxx
*
*/
public class FILEView extends BaseView implements View {
/** 需要输出的文件路径 */
private String filePath;
/**
* 带模板路径的构造器
*
* @param templateName
* 模板路径
*/
public FILEView(String filePath) {
this.filePath = filePath;
}
public void render(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
super.render(request, response);
// response.setCharacterEncoding("UTF-8");
String cStr1 = filePath;
// cStr1 = URLDecoder.decode(filePath,"UTF-8");
String view_name = filePath.substring(filePath.lastIndexOf("/") + 1);
String cFilePath;
cFilePath = StartUp.deployDirectory + cStr1;
File file = new File(cFilePath);
if (!file.exists()) {
return;
}
File downFile = new File(cFilePath);
response.setContentType("binary/octet-stream;charset=UTF-8");
// response.setContentType("application/x-msdownload");
// 判断浏览器版本,设置相应编码格式
String userAgent = request.getHeader("User-Agent");
System.out.println(userAgent);
userAgent = userAgent.toLowerCase();
if (userAgent.indexOf("msie") != -1) {
//response.setHeader("Content-Disposition", "attachment; filename=\""
// + URLEncoder.encode(view_name, "UTF-8") +"\"");
response.setHeader( "Content-Disposition", "attachment;filename=" + new String(view_name.getBytes("gb2312"), "ISO8859-1" ));
} else {
String fileName = new String(view_name.getBytes("UTF-8"),
"ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileName + "\"");
}
ServletOutputStream out = response.getOutputStream();
InputStream is = new FileInputStream(downFile);
byte[] bytes = new byte[1024];
while (true) {
int chunk = is.read(bytes);
if (chunk == -1) {
break;
}
out.write(bytes, 0, chunk);
}
is.close();
is = null;
out.flush();
out.close();
}
public String getFilePath() {
return filePath;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
}
分享到:
相关推荐
### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...
### 使用JSP下载Excel文件知识点解析 #### 一、引言 在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到...
1. **设置Excel文件编码**:在导出数据时,确保Excel文件采用支持中文的编码格式,如UTF-8。大多数现代软件默认使用UTF-8,但如果你使用的是较旧版本的Excel,可能需要手动设置。 2. **导出前统一编码**:在导出前...
在.NET开发中,经常需要将数据导出到Excel文件,以...通过这些技巧,可以确保用户能够顺利地下载到包含所有数据且无乱码的Excel文件。在实际开发中,根据项目需求,可能还需要考虑其他因素,如性能优化、数据格式化等。
本文将详细介绍如何利用ETL工具将Excel文件中的数据导入MySQL数据库,并解决在这一过程中可能遇到的乱码问题。 #### 一、ETL概念与作用 ETL是指数据从源系统抽取(Extract)、转换(Transform)和加载(Load)到...
然而,在某些情况下,当我们尝试使用Excel打开这些DBF文件时,可能会遇到乱码的问题。这主要是由于编码不兼容或者设置不当导致的。以下是一些详细的解决方案: 1. **检查文件编码**:首先,确认DBF文件的编码类型。...
jxl.jar是一款专门针对Java开发的库,能够完美地解析95-2000年间的Excel文件,而其他很多库在这个问题上则可能遇到乱码或者解析不完整的问题。 首先,我们需要了解jxl.jar的核心功能。jxl.jar支持读取和写入Excel...
在使用Tomcat作为Web服务器的应用程序中,可能会遇到一个常见的问题:当用户尝试通过Internet Explorer(IE)浏览器下载rar格式的文件时,文件会被误识别为文本文件,并以乱码形式展示出来。这主要是因为Tomcat默认...
1. 文件编码问题:Excel文件可能以不同的字符编码(如UTF-8、GBK等)保存,当编码不匹配时,打开文件时就会显示乱码。 2. 文件损坏:硬盘故障、突然断电或不正确的关闭计算机都可能导致Excel文件结构损坏,从而在...
3. **乱码问题分析**:当Web Dynpro应用读取Excel文件时,如果Excel文件包含非ASCII字符(如中文、日文等),而jxl.jar没有正确处理这些字符的编码,就可能导致乱码。这可能是由于jxl.jar内部未使用正确的字符编码...
1. **Excel文件格式**:Excel文件通常以`.xls`为扩展名,是Microsoft Excel的二进制文件格式,用于存储表格数据,包括数字、文本、公式等。 2. **Java中的Excel操作**:Java本身并不内置对Excel文件的直接支持,但...
6. 在 Excel 中直接打开该文本文件,另存为其他名字的 Excel 文件即可。 注意:这种修复的方法是利用 Word 的直接读取 Excel 文件的功能实现,该方法在文件头没有损坏,只是文件内容有损坏的情况下比较有效,若文件...
Excel文件通常以.xlsx或.xls为扩展名,存储结构化的二维表格数据。 2. **Text文件**:也称为纯文本文件,它仅包含可打印的ASCII字符或Unicode字符,不包含任何格式化信息。Text文件通常以.txt为扩展名,适合用于...
Excel文件通常以.xlsx或.xls为扩展名,其中存储了表格数据、公式、图表和格式设置等信息。在编程环境中读取Excel数据,通常需要借助特定的库或工具,例如在Python中,我们可以使用pandas库,而在Java中则可能用到...
1. **中文支持优秀**:jxl 在处理中文字符时,不会出现乱码问题,非常适合需要大量处理中文内容的应用场景。 2. **平台无关性**:jxl API 完全基于 Java 实现,可以在任何支持 Java 的操作系统上运行,包括 Windows...
值得注意的是,这里的乱码仅限于文件名或特定软件中的显示,文件的实际内容通常是正常的,可以使用如Excel等工具正常打开和查看。 #### 解决方案 针对Win11和Win10系统中的中文文件名乱码问题,我们提供以下解决...
- 处理中文字符时,要确保正确的编码设置,避免乱码问题。 - 对于有复杂公式的Excel文件,可能需要更深入地处理单元格类型和数据转换。 通过以上分析,我们可以看到,Apache POI库为Java开发者提供了强大而灵活的...
在IT行业中,处理数据是日常任务之一,而Excel文件作为数据存储和交换的常用格式,经常需要与数据库系统如MySQL进行交互。本文将详细介绍如何使用PHP连接MySQL并读取Excel(xls, csv)文件,同时关注编码问题以避免...
正确选择MIME类型对于浏览器处理下载文件非常重要,也影响到用户体验。 ### 知识点六:跨浏览器兼容性问题处理 由于不同浏览器对HTTP头的解析可能存在差异,需要使用如`$_SERVER["HTTP_USER_AGENT"]`来判断用户所...
### MySQL导入SQL或Excel文件的方法 #### 一、MySQL数据库操作基础 在开始介绍如何将SQL脚本或Excel数据导入MySQL数据库之前,我们先来了解一下MySQL的一些基本操作命令。 ##### 创建数据库 创建一个名为`temp`...