`

下载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;
    }

}

分享到:
评论

相关推荐

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

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

    EXCEL集成工具箱V6.0

    例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用...

    php上传文件中文文件名乱码的解决方法

    这几天接触到了php上传文件,但是出现了一个郁闷问题,我准备上传一个excel文件,但是如果文件名是中文名就会报错。 一来二去很是郁闷,后来仔细想了想应该是文件编码的问题,我写的php文件使用的是UTF-8编码,如果...

    python处理Excel xlrd的简单使用

    xlrd主要用于读取Excel文件,本文为大家分享了python处理Excel的具体代码,供大家参考,具体内容如下 安装 pip install xlrd api使用 import xlrd # 打开Excel文件读取数据 workbook = xlrd.open_workbook('a....

    EXCEL集成工具箱V8.0完整增强版(精简)

    例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用...

    java导出mysql数据库表到EXCEL

    第一次上传自已的代码,包含了所需的资源包。 自已有个疑问,希望高手...ToExcel.class运行时处理中文会有问题; 编译成EXE文件后,运行时中文就自动解决了; 特别是mysql表的字段名,以前一直是乱码,解决不了。

    Excel百宝箱8.0

    即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用。 函数名称:排序 函数功能与参数:按出现次数排序。对引用数据将出现次数多...

    Excel百宝箱9.0无限制破解版.rar

    【创建多版本打开方式】:如果安装了多个版本的Office,本工具可助您任意选择Excel文件的打开方式。通过文件右键的“发送到”菜单执行 【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单...

    java版商城源码下载-Tool1.0:工具1.0

    java版商城源码下载 最近需要给select填充数据,而数据存储在...由于tpl中的{{param}}是与excel文件中的列名一一对应的,所以我们需要预先处理excel文件,添加列名 其中tpl中的{{param}}与excel中的param一一对应。并

    Exce百宝箱——2012版本.rar

    【创建多版本打开方式】:如果安装了多个版本的Office,本工具可助您任意选择Excel文件的打开方式。通过文件右键的“发送到”菜单执行 【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单来...

    EXCEL百宝箱8.0终极版

    即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用。 函数名称:排序 函数功能与参数:按出现次数排序。对引用数据将出现次数多...

    BugTrace缺陷跟踪软件 2.4.zip

    2. 修复下载文件为中文名乱码问题 2. 代码托管迁移至[email protected] 特色: 创建项目,自动生成团队成员账号,自动化! 当用户成功注册账号后,在创建项目的同时,只需要输入该项目中其它成员的Email地址...

    BugTrace缺陷跟踪软件 v2.4.zip

    开源缺陷跟踪软件(BugTrACE) 非常便捷的快速的开源缺陷跟踪软件,无需初始化,开包即用。   特色: ...在BugTrace里面,只有分配人和处理人这两个概念...2. 修复下载文件为中文名乱码问题 2. 代码托管迁移至GIT@OSC

    文章管理系统

    上传图片和上传文件框加入编码指定,防止乱码出现 4.修复其他细节bug 2012年11月03日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台文章编辑时获取编辑器缩略图有时...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    易语言程序免安装版下载

    修改BUG:网络传送支持库在使用代理下载时可能会导致程序崩溃。 12. 修改BUG:超级列表框.置列图片()有时功能不正常或导致随机错误。 13. 修改BUG:Sqlite3数据库支持库中的“Sqlite记录集.绑定参数()”命令不...

    LearnSite(swfupload版) 1.2.0.1 20120708b.rar

    LearnSite信息技术教学辅助平台设计目的:解决签到问题、、学案分发问题、作品提交问题、课堂内作品提交率、解决作品评价问题、解决打字练习、解决常识测验、解决学生作品存档问题、解决作品展示问题、解决学生过程...

Global site tag (gtag.js) - Google Analytics