文件下载问题
现在的问题是:
在jsp页面上点击一个按钮后,出现一下对话框(以其它的下载网站一样)。我看到网上很多都是下载的文件与web服务器在一个机子上。这样的下载很简单实现。用流的read,write就可以了。现在的问题是要下载的文件在另一个远程机器上。不是与tomcat在一起.是不是要通过ftp连接过去???
请高手解答一下。写出源代码。谢了
问题点数:100、回复次数:16Top
1 楼ms6309a(ak47ms6309a)回复于 2005-07-02 13:28:00 得分 5
这是个问题,值得研究啊!Top
2 楼yyzh(答题容易分难得)回复于 2005-07-02 13:30:38 得分 5
把远程机器的目录影射过来Top
3 楼ywh005(为一)回复于 2005-07-02 13:55:01 得分 0
影射不能吧。难道客户端都影射。这不现实。是b/s架构。Top
4 楼ccm1980(海浪)回复于 2005-07-02 15:13:16 得分 5
学习,帮顶Top
5 楼ywh005(为一)回复于 2005-07-02 22:19:46 得分 0
怎么没有高手呢?失望中。Top
6 楼yyzh(答题容易分难得)回复于 2005-07-03 00:29:39 得分 10
天啊!
假设
你的TomCat在A机器上面 你要下载的文件在B机器的 d:\file\ 文件夹下面
那么你可以在A机器上面影射一个网络驱动器 会不会? 把B机器的d:\file\影射为 A机器的 f:盘
在TomCat添加一个新的<Context path="/download" docBase="f:\" debug="0"/>
你要下载的文件的连接就是<a href="/download/youfile.xxx">downlaod</a>
这样行不行?
其实我对你的理解能力也挺失望的。
Top
7 楼hygx(失身志不移)(http://91in.blogchina.com)回复于 2005-07-03 00:52:35 得分 5
同意楼上的映射的方法。Top
8 楼ywh005(为一)回复于 2005-07-13 16:57:07 得分 0
to: yyzh(顶楼的千万记得结贴给分)
谢谢你的建议。但我觉得你没有什么工作经验和开发经验。可以弄系统维护多一点。你的那个方法在大型系统、不同区域、不同系统平台上的情况下是不实际的,可能你没有这方面的经验。不说了。你自己去理解去。Top
9 楼dxj1234(Kindly⊙Wolf)回复于 2005-07-13 17:03:46 得分 5
在文件服务器远程机上也开个http服务,web服务器用HttpConnection读取文件,再转发给浏览器总可以吧。Top
10 楼yyzh(答题容易分难得)回复于 2005-07-13 19:13:03 得分 5
ywh005(为一)
您这话真是令我脸上无光,伤我自尊。
本人99年参加工作,写程序的时间超过7年
公司换过3个,项目做过十几个。
使用的技术也是asp-delphi-vc-java 一步步走过来的
工作6年 一直处在开发第一线,系统维护的事情,从没做过。
每个人到这里来回答你的问题,都不是责任和义务,就算是帮顶的,都应谢谢人家。
动不动就是没有高手,动不动就失望,岂不是寒了大家的心?Top
11 楼james780103(无心恋栈)回复于 2005-07-13 19:59:20 得分 5
to: yyzh(顶楼的千万记得结贴给分)
说的好!支持!希望继续回答问题,别理会别人说什么?谢谢为人民服务的!Top
12 楼bigc2001(大C)回复于 2005-07-13 21:21:17 得分 5
a用户-----请求----->B服务器-----读----->C服务器------返回数据流----->A用户?
累死了.Top
13 楼laughsmile(海边的星空)回复于 2005-07-13 21:59:26 得分 30
1.从远端机器读到本机.
String strTempDir = "c:\\1111.jpg"
try {
java.net.URL url =
new java.net.URL(
"http://www.google.com/intl/zh-CN_ALL/images/logo.gif");
BufferedInputStream input = new BufferedInputStream(url.openStream());
BufferedOutputStream out =
new BufferedOutputStream(new FileOutputStream(strTempDir));
byte[] buf = new byte[1024];
int len = input.read(buf, 0, buf.length);
while (len != -1) {
out.write(buf, 0, len);
len = input.read(buf, 0, buf.length);
}
input.close();
input = null;
out.close();
out = null;
} catch (Exception e) {
System.out.println(e);
}
2.从本机写到客户端
BufferedInputStream input = null;
BufferedOutputStream out = null;
try{
input = new BufferedInputStream(new FileInputStream(downloadFilePath));
out = new BufferedOutputStream(response.getOutputStream());
byte[] buf = new byte[1024];
int len = input.read(buf, 0, buf.length);
response.setContentType("image/jpg");
response.setHeader("Content-Disposition","inline");
while (len != -1){
out.write(buf, 0, len);
len = input.read(buf, 0, buf.length);
}
input.close();
input = null;
out.close();
out = null;
response.flushBuffer();
}catch(Exception e){
}Top
14 楼laughsmile(海边的星空)回复于 2005-07-13 21:59:54 得分 10
input = new BufferedInputStream(new FileInputStream(strTempDir));Top
15 楼duanxd()回复于 2005-07-13 23:21:19 得分 5
路过lzTop
16 楼zyxzyx10(coolber)回复于 2005-07-13 23:35:54 得分 5
都是歪人Top




