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 解决中文名乱码 同时赠由二进制转换成文件(解决中文名乱码)
例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用...
这几天接触到了php上传文件,但是出现了一个郁闷问题,我准备上传一个excel文件,但是如果文件名是中文名就会报错。 一来二去很是郁闷,后来仔细想了想应该是文件编码的问题,我写的php文件使用的是UTF-8编码,如果...
xlrd主要用于读取Excel文件,本文为大家分享了python处理Excel的具体代码,供大家参考,具体内容如下 安装 pip install xlrd api使用 import xlrd # 打开Excel文件读取数据 workbook = xlrd.open_workbook('a....
例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用...
第一次上传自已的代码,包含了所需的资源包。 自已有个疑问,希望高手...ToExcel.class运行时处理中文会有问题; 编译成EXE文件后,运行时中文就自动解决了; 特别是mysql表的字段名,以前一直是乱码,解决不了。
即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用。 函数名称:排序 函数功能与参数:按出现次数排序。对引用数据将出现次数多...
【创建多版本打开方式】:如果安装了多个版本的Office,本工具可助您任意选择Excel文件的打开方式。通过文件右键的“发送到”菜单执行 【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单...
java版商城源码下载 最近需要给select填充数据,而数据存储在...由于tpl中的{{param}}是与excel文件中的列名一一对应的,所以我们需要预先处理excel文件,添加列名 其中tpl中的{{param}}与excel中的param一一对应。并
【创建多版本打开方式】:如果安装了多个版本的Office,本工具可助您任意选择Excel文件的打开方式。通过文件右键的“发送到”菜单执行 【生成2003样式菜单】:Excel 2007或者Excel 2010专用,可以产生2003样式的菜单来...
即名次不间断,当两人并列第二名时,仍然存在第三名。有两个参数,第一参数为成绩区域,第二参数为待排名的成绩。参数不局限于区域引用。 函数名称:排序 函数功能与参数:按出现次数排序。对引用数据将出现次数多...
2. 修复下载文件为中文名乱码问题 2. 代码托管迁移至[email protected] 特色: 创建项目,自动生成团队成员账号,自动化! 当用户成功注册账号后,在创建项目的同时,只需要输入该项目中其它成员的Email地址...
开源缺陷跟踪软件(BugTrACE) 非常便捷的快速的开源缺陷跟踪软件,无需初始化,开包即用。 特色: ...在BugTrace里面,只有分配人和处理人这两个概念...2. 修复下载文件为中文名乱码问题 2. 代码托管迁移至GIT@OSC
上传图片和上传文件框加入编码指定,防止乱码出现 4.修复其他细节bug 2012年11月03日 ★更新方式:admin文件夹改成你后台目录名,然后补丁包里的所有文件覆盖进去。 1.纠正后台文章编辑时获取编辑器缩略图有时...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
修改BUG:网络传送支持库在使用代理下载时可能会导致程序崩溃。 12. 修改BUG:超级列表框.置列图片()有时功能不正常或导致随机错误。 13. 修改BUG:Sqlite3数据库支持库中的“Sqlite记录集.绑定参数()”命令不...
LearnSite信息技术教学辅助平台设计目的:解决签到问题、、学案分发问题、作品提交问题、课堂内作品提交率、解决作品评价问题、解决打字练习、解决常识测验、解决学生作品存档问题、解决作品展示问题、解决学生过程...