java 下载CSV文件没有弹出保存框,直接在IE显示了。在线等啊,求大神帮忙解决下。

a271955291 2012-09-04 08:49:47
Map map = JsonParser.json2Map(xmlData);
URL url = URLUtil.getWebFileUrl(ConfigureParser.getInstance()
.getAttribute("filePath"));
String reportPath = url.getPath() + "/";
String reportName =null;
String sheetName = null;
File f = new File(reportPath, "excel");
if (!f.exists() && !f.isDirectory()) {//判断路径目录是否存在,判断是不是目录文件
f.mkdir();//不存在的话就创建file路径的目录
}
Calendar c = Calendar.getInstance();
c.add(c.SECOND,0);
String timeName = ""+c.get(c.YEAR)+(c.get(c.MONTH)+1)+c.get(c.DATE)
+c.get(c.HOUR_OF_DAY)+c.get(c.MINUTE)+c.get(c.SECOND);

reportName= "AnimalTongJi" + timeName + ".csv";
sheetName = "母猪状态统计";
String reportDir = reportPath + "excel/" + reportName;
reportDir=reportDir.replaceAll("%20", " ");

// 判断文件是否存在
File file = new File(reportDir);
if(file.exists())file.delete();//存在则删除

String displayName = null;
try {
displayName = URLEncoder.encode(reportName, "UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
// HttpServletResponse response;
// response.setHeader("Content-disposition","inline;filename="+templateName);
HttpServletResponse response = ServletActionContext.getResponse();
response.reset();
response.setHeader("Cache-Control", "Public");
response.setContentType("application/msexcel");
// response.setContentType("application/ms-excel");
// response.setContentType("application/unknow");
// response.setHeader("Cache-Control", "Public");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition","inline;filename="+displayName);
List list = stasticsService.getNDExcelBasic(xmlData);
Object[] map1 =null;
map1 = (Object[]) list.get(0);
int size = map1.length;
String result = "";

try {
FileOutputStream fos = new FileOutputStream(file,true);
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
for (int i = 0; i < list.size(); i++) {
map1=(Object[]) list.get(i);
for (int j = 0; j < map1.length; j++) {
if(map1[j]!=null){
result +=map1[j];
}
result +=",";
}
result += "\r\n";
if(i%2000==0){
bw.write(result);
result ="";
}
}

bw.write(result);
bw.newLine();
bw.flush();
bw.close();
osw.close();
fos.close();
}

catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
this.print("{'name':" + timeName + "}");
return XML;
...全文
242 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
a271955291 2012-09-07
  • 打赏
  • 举报
回复
<mime-mapping>
<extension>csv</extension>
<mime-type>application/oct-stream</mime-type>
</mime-mapping>

终于找出问题了。Tomcat/conf/web.xml 文件中缺少了以上代码。

发出来这个答案,希望对看到的人有用。
Go 旅城通票 2012-09-04
  • 打赏
  • 举报
回复
那就不清楚了,你还其他台电脑试试。作为附件都是设置 response.setHeader("Content-Disposition","attachment;filename=\""+displayName+"\"");

不行你转移到java版看看,发错版块了
a271955291 2012-09-04
  • 打赏
  • 举报
回复
求专家啊
a271955291 2012-09-04
  • 打赏
  • 举报
回复
还有没有更多的人来探讨这个问题?急啊。。。。
a271955291 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
换其他浏览器试试,如果其他浏览器能实现,那么就是浏览器的问题了

要换不同核心的,如果IE,firefox,chrome,而不是IE,360,搜狗,TT这种,都是IE核心的
[/Quote]
我维护的这个系统只能在IE上打开,里面有一些key不能在火狐打开。。
Go 旅城通票 2012-09-04
  • 打赏
  • 举报
回复
换其他浏览器试试,如果其他浏览器能实现,那么就是浏览器的问题了

要换不同核心的,如果IE,firefox,chrome,而不是IE,360,搜狗,TT这种,都是IE核心的
a271955291 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
////attachment --- 作为附件下载
////inline --- 在线打开

改为attachment应该是可以保存为附件形式的,你关闭浏览器,清空缓存然后再重新试试

可能是inline打开过后浏览器记住打开方式了
[/Quote]
还是不行。。。缓存清了,重新打开。。啊啊啊。。可能是什么地方错了那?
Go 旅城通票 2012-09-04
  • 打赏
  • 举报
回复
////attachment --- 作为附件下载
////inline --- 在线打开

改为attachment应该是可以保存为附件形式的,你关闭浏览器,清空缓存然后再重新试试

可能是inline打开过后浏览器记住打开方式了
a271955291 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
response.setContentType("application/vnd.ms-excel");
// response.setHeader("Content-disposition","inline;filename="+displayName);
//===>
response.setHeader("Content-Disposition","attachment;file……
[/Quote]

你说的这个也不行,我看别人都能解决问题,为什么我这上面就不行那,会不会是浏览器的问题?
Go 旅城通票 2012-09-04
  • 打赏
  • 举报
回复
response.setContentType("application/vnd.ms-excel");
// response.setHeader("Content-disposition","inline;filename="+displayName);
//===>
response.setHeader("Content-Disposition","attachment;filename=\""+displayName+"\"");
a271955291 2012-09-04
  • 打赏
  • 举报
回复
没有大神在吗?大神也要睡觉吗?真的太早了吗?
a271955291 2012-09-04
  • 打赏
  • 举报
回复
其他电脑刚才刚搞好,试了下。。不行。。啊啊。这个问题搞了二周了。。

52,798

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧