`

下载excel文件名字乱码问题处理

阅读更多

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文件并且下载到客户端(包括解决中文乱码).txt

    ### Java导出Excel文件并下载到客户端(含解决中文乱码问题) 在现代的企业级应用开发中,数据导出功能是非常常见的一种需求。特别是在B/S架构的应用中,用户经常需要将查询结果导出为Excel文件以便进行后续的数据...

    使用jsp下载excel文件

    ### 使用JSP下载Excel文件知识点解析 #### 一、引言 在Web开发中,经常需要将服务器上生成的数据导出为Excel文件供用户下载。本文档将详细介绍如何使用Java Server Pages (JSP) 实现从服务器端下载Excel文件到...

    数据导出EXCEL 解决中文名乱码 同时赠由二进制转换成文件(解决中文名乱码)

    1. **设置Excel文件编码**:在导出数据时,确保Excel文件采用支持中文的编码格式,如UTF-8。大多数现代软件默认使用UTF-8,但如果你使用的是较旧版本的Excel,可能需要手动设置。 2. **导出前统一编码**:在导出前...

    导出excel汉字乱码以及GridView分页问题

    在.NET开发中,经常需要将数据导出到Excel文件,以...通过这些技巧,可以确保用户能够顺利地下载到包含所有数据且无乱码的Excel文件。在实际开发中,根据项目需求,可能还需要考虑其他因素,如性能优化、数据格式化等。

    使用ETL把EXCEL导入到MySQL,并处理乱码问题

    本文将详细介绍如何利用ETL工具将Excel文件中的数据导入MySQL数据库,并解决在这一过程中可能遇到的乱码问题。 #### 一、ETL概念与作用 ETL是指数据从源系统抽取(Extract)、转换(Transform)和加载(Load)到...

    解决Arcgis中dbf文件用EXCEL打开乱码问题

    然而,在某些情况下,当我们尝试使用Excel打开这些DBF文件时,可能会遇到乱码的问题。这主要是由于编码不兼容或者设置不当导致的。以下是一些详细的解决方案: 1. **检查文件编码**:首先,确认DBF文件的编码类型。...

    jxl.jar解析2000以下Excel文件不会乱码

    jxl.jar是一款专门针对Java开发的库,能够完美地解析95-2000年间的Excel文件,而其他很多库在这个问题上则可能遇到乱码或者解析不完整的问题。 首先,我们需要了解jxl.jar的核心功能。jxl.jar支持读取和写入Excel...

    Tomcat 在IE中下载rar文件为乱码解决方案

    在使用Tomcat作为Web服务器的应用程序中,可能会遇到一个常见的问题:当用户尝试通过Internet Explorer(IE)浏览器下载rar格式的文件时,文件会被误识别为文本文件,并以乱码形式展示出来。这主要是因为Tomcat默认...

    excel乱码修复工具

    1. 文件编码问题:Excel文件可能以不同的字符编码(如UTF-8、GBK等)保存,当编码不匹配时,打开文件时就会显示乱码。 2. 文件损坏:硬盘故障、突然断电或不正确的关闭计算机都可能导致Excel文件结构损坏,从而在...

    jxl.jar原版、修改后的jxl.jar解决web dynpro中乱码问题

    3. **乱码问题分析**:当Web Dynpro应用读取Excel文件时,如果Excel文件包含非ASCII字符(如中文、日文等),而jxl.jar没有正确处理这些字符的编码,就可能导致乱码。这可能是由于jxl.jar内部未使用正确的字符编码...

    Excel文件读写java代码

    1. **Excel文件格式**:Excel文件通常以`.xls`为扩展名,是Microsoft Excel的二进制文件格式,用于存储表格数据,包括数字、文本、公式等。 2. **Java中的Excel操作**:Java本身并不内置对Excel文件的直接支持,但...

    excel乱码怎么修复.docx

    6. 在 Excel 中直接打开该文本文件,另存为其他名字的 Excel 文件即可。 注意:这种修复的方法是利用 Word 的直接读取 Excel 文件的功能实现,该方法在文件头没有损坏,只是文件内容有损坏的情况下比较有效,若文件...

    Excel文件转成Text文件

    Excel文件通常以.xlsx或.xls为扩展名,存储结构化的二维表格数据。 2. **Text文件**:也称为纯文本文件,它仅包含可打印的ASCII字符或Unicode字符,不包含任何格式化信息。Text文件通常以.txt为扩展名,适合用于...

    Excel读取用到的文件.zip

    Excel文件通常以.xlsx或.xls为扩展名,其中存储了表格数据、公式、图表和格式设置等信息。在编程环境中读取Excel数据,通常需要借助特定的库或工具,例如在Python中,我们可以使用pandas库,而在Java中则可能用到...

    jxl操作excel文件

    1. **中文支持优秀**:jxl 在处理中文字符时,不会出现乱码问题,非常适合需要大量处理中文内容的应用场景。 2. **平台无关性**:jxl API 完全基于 Java 实现,可以在任何支持 Java 的操作系统上运行,包括 Windows...

    win11、win10中文文件名称乱码(菱形黑框问号)解决方案.docx

    值得注意的是,这里的乱码仅限于文件名或特定软件中的显示,文件的实际内容通常是正常的,可以使用如Excel等工具正常打开和查看。 #### 解决方案 针对Win11和Win10系统中的中文文件名乱码问题,我们提供以下解决...

    excel文件的导入

    - 处理中文字符时,要确保正确的编码设置,避免乱码问题。 - 对于有复杂公式的Excel文件,可能需要更深入地处理单元格类型和数据转换。 通过以上分析,我们可以看到,Apache POI库为Java开发者提供了强大而灵活的...

    PHP连接mysql读取excel文件(xls,cvs),附带示例,注意编码,容易乱码

    在IT行业中,处理数据是日常任务之一,而Excel文件作为数据存储和交换的常用格式,经常需要与数据库系统如MySQL进行交互。本文将详细介绍如何使用PHP连接MySQL并读取Excel(xls, csv)文件,同时关注编码问题以避免...

    php中强制下载文件的代码(解决了IE下中文文件名乱码问题)

    正确选择MIME类型对于浏览器处理下载文件非常重要,也影响到用户体验。 ### 知识点六:跨浏览器兼容性问题处理 由于不同浏览器对HTTP头的解析可能存在差异,需要使用如`$_SERVER["HTTP_USER_AGENT"]`来判断用户所...

    mysql导入sql或excel文件

    ### MySQL导入SQL或Excel文件的方法 #### 一、MySQL数据库操作基础 在开始介绍如何将SQL脚本或Excel数据导入MySQL数据库之前,我们先来了解一下MySQL的一些基本操作命令。 ##### 创建数据库 创建一个名为`temp`...

Global site tag (gtag.js) - Google Analytics