java远程文件转成输入流之后写给浏览器,达到下载该文件的效果,在window中运行正常,linux中无法下载 jspjava 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 linux下没有\,\还是用 File.separator替换吧 试了下,还是不行,我的附件是在附件服务器上的,也是linux服务器, 在windows下起的tomcat服务是可以访问并下载的,所以应该不会是分隔符的问题,而且流应该是已经取到了,问题可能是写的时候出的。。修改代码如下,测试无效:{ String url = "/upload/apache-tomcat-6.0.33/webapps/UploadWeb/upload/" + appUrl; url = url.replace("/", java.io.File.separator); is = ftp.getInputStream(url);} response.setHeader("Content-Disposition", "attachment;filename=\"" + java.net.URLEncoder.encode(appName,"UTF-8") + "\""); 现在把这个\去掉了,还是不行,{response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(appName,"UTF-8"));}你之前讲的用 File.separator替换\, 感觉不是很必要, 因为\"是提示java不编译\后面的", 达到参数 attachment;filename="雨一直下.doc"的效果 , 不用\要达到上面的效果,没想到好办法 ,所以就把\去掉了, 最后参数是attachment;filename=雨一直下.doc 这样的, 网上大多也是这样写的 ,不过还是没有解决这个问题 res.setContentType("application/octet-stream"); res.setHeader("Content-disposition", "attachment; filename=\"" + file.getName() + "\""); res.setContentLength((int)file.length()); res.setHeader("Expires", "0"); res.setHeader("Cache-Control", "must-revalidate, post-check=0,pre-check=0"); res.setHeader("Pragma", "private");设成这样 我测试了下, 文件的可以获取到的,文件流中是有数据的 , 在考虑会不会是{ response.flushBuffer(); out.clear(); out = pageContext.pushBody();}引起的问题? 这个问题应该是windows和linux解析JSP的时候有差异引起的, 因为在windows中运行没的问题, 上面的都试过了,还是不行 既然附件也是在服务器上的 那就可以换个方法吧<a href="附件的url路径">下载</a> 我也遇到这个问题了,发现时路径的问题,我的文件同样的位置, windows找的路径 和 linux找的路径不一致,建议楼主 把路径打出来 ,用 远程debug,跟踪调试。 启动报错java.lang.reflect.invocationtargetException 下拉菜单怎么做啊? 关于删除有关联关系的实体的问题 调试jsp到底怎么才能及时更新? tomcat连接ACCESS的小问题~! Criteria 多对多查询 同步的思想是什么,如何实现一个对象和一个方法的同步? 404错误问题 300分求:jfreechart develop guide 文档 请大虾们推荐几本学习jsp和ejb得好书! io流求助 java FILE类里为服务器路径,无法new成功
试了下,还是不行,我的附件是在附件服务器上的,也是linux服务器, 在windows下起的tomcat服务是可以访问并下载的,所以应该不会是分隔符的问题,而且流应该是已经取到了,问题可能是写的时候出的。。修改代码如下,测试无效:
{
String url = "/upload/apache-tomcat-6.0.33/webapps/UploadWeb/upload/" + appUrl;
url = url.replace("/", java.io.File.separator);
is = ftp.getInputStream(url);
}
现在把这个\去掉了,还是不行,{
response.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode(appName,"UTF-8"));
}你之前讲的用 File.separator替换\, 感觉不是很必要, 因为\"是提示java不编译\后面的", 达到参数 attachment;filename="雨一直下.doc"的效果 , 不用\要达到上面的效果,没想到好办法 ,所以就把\去掉了, 最后参数是attachment;filename=雨一直下.doc 这样的, 网上大多也是这样写的 ,
不过还是没有解决这个问题
res.setHeader("Content-disposition", "attachment; filename=\"" + file.getName() + "\"");
res.setContentLength((int)file.length());
res.setHeader("Expires", "0");
res.setHeader("Cache-Control", "must-revalidate, post-check=0,pre-check=0");
res.setHeader("Pragma", "private");设成这样
文件流中是有数据的 , 在考虑会不会是
{
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
}
引起的问题?
<a href="附件的url路径">下载</a>