|
阅读:1018回复:15
[求救]从FTP服务器下载文件怎么实现?
情况是这样的:
一个下载系统,所有的文件都存放在FTP服务器上,用户从WEB页访问(和大多数下载网站一样) 用户点击WEB页的下载链接,即可以下载文件。但是,不能让客户端得到FTP服务器的用户名和密码。 怎么实现? 应该有实现了的,平时在下载东西的时候好像见过那种。在 FLASH GET 里日志能看到 ....... ...... 重新定向到:.... 开始FTP处理... .... .... 开始接收数据 好像是是这么个过程 具体怎么实现的? jsp servlet javabean.... |
|
|
|
1C#
发布于:2005-08-02 09:17
Re:[求救]从FTP服务器下载文件怎么实现?
要不就试着写一个处理http请求的servlet来配合j-smart使用不知道行不行
ps:oooo,这个问题是挺郁闷的哈,我们龙老大明天回来再行解决的方法 |
|
|
|
2C#
发布于:2005-08-02 14:31
Re:[求救]从FTP服务器下载文件怎么实现?
绝望地呼喊~~就没有人做过下载么?。。。 |
|
|
|
3C#
发布于:2005-08-02 15:45
Re:[求救]从FTP服务器下载文件怎么实现?
帮顶
等解决方案 [ 2005-08-02 17:29:54 suchasplus 修改 ] |
|
|
|
4C#
发布于:2005-08-02 15:57
Re:[求救]从FTP服务器下载文件怎么实现?
作一个sql查询,然后把查出来的值赋给~~赋给~~赋给~~40自己想 哥们,写出代码来看看 [ 2005-08-02 16:24:12 apache 修改 ] |
|
|
|
5C#
发布于:2005-08-02 16:24
Re:[求救]从FTP服务器下载文件怎么实现?
请问我有那里得罪您么? 我又不了解java api,但是不就像您所说的,道理都是相通的,思路不行么 [ 2005-08-02 16:26:07 suchasplus 修改 ] |
|
|
|
6C#
发布于:2005-08-03 09:08
Re:[求救]从FTP服务器下载文件怎么实现?
不用寫,提供思路也行啊~~~
值給誰啊。。生成 ftp://user:psw@domain/ 再轉向?不行。 |
|
|
|
7C#
发布于:2005-08-03 14:06
Re:[求救]从FTP服务器下载文件怎么实现?
download.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>下载</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body> <a href="jsp/do_download.jsp">点击下载</a> </body> </html> do_download.jsp <%@ page contentType="text/html;charset=gb2312" import="com.jspsmart.upload.*" %> <%SmartUpload su = new SmartUpload();//new 一个实例 su.initialize(pageContext); su.setContentDisposition(null); su.downloadFile("/upload/???.???");//文件目录级文件名 %> PS:0000老兄,我道行还浅,只能帮你这么多了,你再试试,实在要是再不行得话,只能等我们long老大回来再说了赫赫 |
|
|
|
8C#
发布于:2005-08-03 15:55
Re:[求救]从FTP服务器下载文件怎么实现?
樓上的。。。。問題在於怎麽來登錄。。。
smartupload不能傳入 url 參數~~ |
|
|
|
9C#
发布于:2005-08-03 15:56
Re:[求救]从FTP服务器下载文件怎么实现?
Smartupload我試過了~~ |
|
|
|
10C#
发布于:2005-08-07 20:46
Re:[求救]从FTP服务器下载文件怎么实现?
还没解决,上次松松提了个办法,但是断点续传有问题吗?
而且限制了平台,只能在 LINUX ~ |
|
|
|
11C#
发布于:2005-08-07 20:57
Re:[求救]从FTP服务器下载文件怎么实现?
吐了
|
|
|
|
12C#
发布于:2005-08-07 21:02
Re:[求救]从FTP服务器下载文件怎么实现?
SmartUpload 的 downloadFile 方法的主要代码如下:
public void downloadFile(String s, String s1, String s2, int i)
throws ServletException, IOException, SmartUploadException
{
/*
.......检测....
*/
/*
m_application 是 ServletContext 对象
getRealPath
public String getRealPath(String path);
一个符合URL路径格式的指定的虚拟路径的格式是:/dir/dir/filename.ext。用这个方法,可以返回与一个符合该格式的虚拟路径相对应的真实路径的String。这个真实路径的格式应该适合于运行这个Servlet引擎的计算机(包括其相应的路径解析器)。
不管是什么原因,如果这一从虚拟路径转换成实际路径的过程不能执行,该方法将会返回一个空值。
*/
s = m_application.getRealPath(s);
/*
根据上面得到实际路径创建 File 类型对象
如果我是要从FTP服务器得到文件,现在的想法有两种方式
1 通过 ftp://user:password@domain/path_to_file/file_name 这样的URL来创建 File 对象,但这样好像行不通
2 类似于映射网络硬盘,我的两台服务器是位于同一个网络内的,可不可以通过像 NFS 这样的东西来实现?
*/
java.io.File file = new java.io.File(s);
/*
根据上面的 File 类型创建 FileInputStream, 问题就在这里,用FTP链接方式创建的 File 对象会在这里报错
*/
FileInputStream fileinputstream = new FileInputStream(file);
long l = file.length();
boolean flag = false;
int k = 0;
byte abyte0[] = new byte[i];
/*
....
设置 html head 信息
......
*/
while((long)k < l)
{
int j = fileinputstream.read(abyte0, 0, i);
k += j;
/*
上面读取,然后再向客户端写~~
这样会不会对WEB服务器有压力?效率问题?
*/
m_response.getOutputStream().write(abyte0, 0, j);
}
fileinputstream.close();
}
这是一个方法~~很难实现~~ |
|
|
|
13C#
发布于:2005-08-07 21:06
Re:[求救]从FTP服务器下载文件怎么实现?
第二个办法,松松提的。
每次访问时生成一个临时的随机的用户名和密码,存入 mysql 数据库(FTP服务器用 vsftp ,好像只发现它可以以MYSQL数据库作为存放用户名和密码的东西。。。) 这个临时的用户名和密码在一定的时间之内失效。 然后返回给客户端一个 ftp://m_user:m_psw@domain/... 的链接 这样的话,如果文件一次下载完就没有问题,但如果是要断点续传就不知道该怎么办了~~ |
|
|
|
14C#
发布于:2005-08-09 09:00
Re:[求救]从FTP服务器下载文件怎么实现?
抄襲 smartupload 的辦法,可以按下面的方式實現
但是估計速度有問題~~ 修改下讀的時候不要一次全讀(一次65535 byte?) String surl = "ftp://user:psw@domain/path/file";
try{
InputStream is = new URL(surl).openStream();
BufferedInputStream bis = new BufferedInputStream(is);
StringBuffer s = new StringBuffer();
int c;
while((c = bis.read()) > -1){
s.append((char)c);
}
}catch(Exception e){
e.printStackTrace();
}'
還是覺得可能用松松的辦法更好一些~~ |
|
|
|
15C#
发布于:2005-08-09 11:27
Re:[求救]从FTP服务器下载文件怎么实现?
第二个办法,松松提的。每次访问时生成一个临时的随机的用户名和密码,存入 mysql 数据库(FTP服务器用 vsftp ,好像只发现它可以以MYSQL数据库作为存放用户名和密码的东西。。。)这个临时的用户名和密码在一定的时.. 好像有的服务器就是这样的.....区别只在时间长短 |
|
|