java客户端如何将服务器端的某一个文件夹下所有的文件都下载下来

时间:2023-01-24 21:34:42
现在有这样一个需求:服务器A(用Tomcat服务器搭建的)、客户端B,现在客户端B想把服务器端A下的一个文件夹下的所有文件都下载下来,请问应该如何实现。

20 个解决方案

#1


大侠们哪里去了

#2


网上有实例你可以搜下,很多的,主要是看你走什么协议,ftp还是http

#3


1:后台Action里面调操作系统命令gzip打包该目录,向response.outputStream里面写zip文件
2:后台Action里面递归,处理每一个子目录的文件

#4


引用 2 楼 duguqiubaibenr 的回复:
网上有实例你可以搜下,很多的,主要是看你走什么协议,ftp还是http

网上说的哪些不合适呀,我是走http协议的,我是想由客户端自己来下载,服务器端是不需要任何额外程序的,因为我服务器端用tomcat搭建,将一个目录设置为共享后,客户端自己来下载这个目录下的所有文件

#5


引用 3 楼 qingyuan18 的回复:
1:后台Action里面调操作系统命令gzip打包该目录,向response.outputStream里面写zip文件
2:后台Action里面递归,处理每一个子目录的文件

不用action,就用纯java程序怎么写呢,完全有客户端来实现,服务器端仅仅将那个文件夹设置为共享了就可以

#6


走HTTP协议服务器端不做任何处理客户端就可以下载了???????????????????????????貌似不行吧  如果ftp协议倒是可以

#7


http connect之后,解析html,遍历返回文件的列表,如果是目录,递归遍历,如果是文件,把这个文件下载下来。

#8


引用 7 楼 bayougeng 的回复:
http connect之后,解析html,遍历返回文件的列表,如果是目录,递归遍历,如果是文件,把这个文件下载下来。

用java中的URLConnection应该怎么来做呢

#9


服务端那个文件夹放一个filelist,然后客户端请求这个文件,得到要下载的文件列表,然后下载就行了

#10


引用 9 楼 x19881216 的回复:
服务端那个文件夹放一个filelist,然后客户端请求这个文件,得到要下载的文件列表,然后下载就行了

问题是如何得到下载列表

#11


楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

#12


引用 11 楼 qingyuan18 的回复:
楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做

#13


    public List<String[]> getFileList(String path) throws IOException {
    
     if(path == null) return null;
     if(!checkFtpConnect()) return null;
  
     path = new String(path.getBytes("utf-8"), "ISO-8859-1");
        FTPFile[] ftpFiles= ftpClient.listFiles(path);
            
        List<String[]> retList = new ArrayList<String[]>();    
        if (ftpFiles == null || ftpFiles.length == 0) {    
            return null;    
        }
        for (FTPFile ftpFile : ftpFiles) {    
            if (ftpFile.isFile()) {
                retList.add(getFileInfo(ftpFile));    
            }else {
         retList.add(getFileDirectory(ftpFile));
}
        }    
        return retList;    
    }
首先遍历目标文件夹下的文件,是文件就直接下载,文件夹的话就再遍历该文件夹,用到了回调

#14


引用 12 楼 lxraiyl 的回复:
Quote: 引用 11 楼 qingyuan18 的回复:

楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做


tomcat什么特定端口?webdav/ftp/sshd?不是这类端口你是没有权限去下载文件的,怎么可能随便让一个客户端就可以连服务器取文件?操作系统一层需要先提供文件下载的接口,web项目里面没见过用URLConnection下文件的,URLConnection一般都是用来做http html抓页面

#15


我们项目是用tar命名边压缩边下载,最后下下来的是一个压缩包,不过这样需要在linux下跑

#16


引用 14 楼 qingyuan18 的回复:
Quote: 引用 12 楼 lxraiyl 的回复:

Quote: 引用 11 楼 qingyuan18 的回复:

楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做


tomcat什么特定端口?webdav/ftp/sshd?不是这类端口你是没有权限去下载文件的,怎么可能随便让一个客户端就可以连服务器取文件?操作系统一层需要先提供文件下载的接口,web项目里面没见过用URLConnection下文件的,URLConnection一般都是用来做http html抓页面

现在不用考虑权限问题。项目中突然加了一个下载证书的需求,就是服务器端证书都放在一个文件夹里,我这里有个程序启动后就到服务器端的那个文件夹下拉取所有的证书

#17


服务端什么都不做,你客户端要下载服务器上的文件。

你自己觉得这个要求是不是有点过份?传送文件要么HTTP,FTP。。或者自定义二进制协议,不管什么方式你在服务器端都需要一个可以响应的程序。你即然已经有Tomcat了,可以直接在Tomcat上部署一个应用,使用这个应用来将文件应答给你的客户端。

#18


。。。楼主为什么不肯百度下URLConnection的用法?

http://www.baidu.com/baidu?wd=URLConnection&tn=monline_dg

#19


其实现在我也遇到了这个问题了 采用httpUrlconnection 根本就实现不了 操作的都是服务器端的文件  而且我需要的是将服务器上的文件不要打包下载到客户端 所有不得行 不过采取共享文件夹的方式貌似是可以 可以试试!就不知道满足你的需求不!

#20


请问楼主是怎么解决的,我页遇到了和你一样的情况,要把服务器上的一个文件夹下的所有文件都下载下来,求方法,最好是全部代码,我是新手,说的太复杂,也看不明白

#1


大侠们哪里去了

#2


网上有实例你可以搜下,很多的,主要是看你走什么协议,ftp还是http

#3


1:后台Action里面调操作系统命令gzip打包该目录,向response.outputStream里面写zip文件
2:后台Action里面递归,处理每一个子目录的文件

#4


引用 2 楼 duguqiubaibenr 的回复:
网上有实例你可以搜下,很多的,主要是看你走什么协议,ftp还是http

网上说的哪些不合适呀,我是走http协议的,我是想由客户端自己来下载,服务器端是不需要任何额外程序的,因为我服务器端用tomcat搭建,将一个目录设置为共享后,客户端自己来下载这个目录下的所有文件

#5


引用 3 楼 qingyuan18 的回复:
1:后台Action里面调操作系统命令gzip打包该目录,向response.outputStream里面写zip文件
2:后台Action里面递归,处理每一个子目录的文件

不用action,就用纯java程序怎么写呢,完全有客户端来实现,服务器端仅仅将那个文件夹设置为共享了就可以

#6


走HTTP协议服务器端不做任何处理客户端就可以下载了???????????????????????????貌似不行吧  如果ftp协议倒是可以

#7


http connect之后,解析html,遍历返回文件的列表,如果是目录,递归遍历,如果是文件,把这个文件下载下来。

#8


引用 7 楼 bayougeng 的回复:
http connect之后,解析html,遍历返回文件的列表,如果是目录,递归遍历,如果是文件,把这个文件下载下来。

用java中的URLConnection应该怎么来做呢

#9


服务端那个文件夹放一个filelist,然后客户端请求这个文件,得到要下载的文件列表,然后下载就行了

#10


引用 9 楼 x19881216 的回复:
服务端那个文件夹放一个filelist,然后客户端请求这个文件,得到要下载的文件列表,然后下载就行了

问题是如何得到下载列表

#11


楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

#12


引用 11 楼 qingyuan18 的回复:
楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做

#13


    public List<String[]> getFileList(String path) throws IOException {
    
     if(path == null) return null;
     if(!checkFtpConnect()) return null;
  
     path = new String(path.getBytes("utf-8"), "ISO-8859-1");
        FTPFile[] ftpFiles= ftpClient.listFiles(path);
            
        List<String[]> retList = new ArrayList<String[]>();    
        if (ftpFiles == null || ftpFiles.length == 0) {    
            return null;    
        }
        for (FTPFile ftpFile : ftpFiles) {    
            if (ftpFile.isFile()) {
                retList.add(getFileInfo(ftpFile));    
            }else {
         retList.add(getFileDirectory(ftpFile));
}
        }    
        return retList;    
    }
首先遍历目标文件夹下的文件,是文件就直接下载,文件夹的话就再遍历该文件夹,用到了回调

#14


引用 12 楼 lxraiyl 的回复:
Quote: 引用 11 楼 qingyuan18 的回复:

楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做


tomcat什么特定端口?webdav/ftp/sshd?不是这类端口你是没有权限去下载文件的,怎么可能随便让一个客户端就可以连服务器取文件?操作系统一层需要先提供文件下载的接口,web项目里面没见过用URLConnection下文件的,URLConnection一般都是用来做http html抓页面

#15


我们项目是用tar命名边压缩边下载,最后下下来的是一个压缩包,不过这样需要在linux下跑

#16


引用 14 楼 qingyuan18 的回复:
Quote: 引用 12 楼 lxraiyl 的回复:

Quote: 引用 11 楼 qingyuan18 的回复:

楼主到底想做什么? 非web模式下的文件打包下载?如果是后者,服务端有ftp用apache的ftpClient,服务端有sshd的用gaymed-openssh包模拟sftp登录然后下载,服务端不可能什么登录服务都没有开

服务器端是Tomcat服务器,开启了一个特定端口,我想用URLConnection这个类完成下载,如何做


tomcat什么特定端口?webdav/ftp/sshd?不是这类端口你是没有权限去下载文件的,怎么可能随便让一个客户端就可以连服务器取文件?操作系统一层需要先提供文件下载的接口,web项目里面没见过用URLConnection下文件的,URLConnection一般都是用来做http html抓页面

现在不用考虑权限问题。项目中突然加了一个下载证书的需求,就是服务器端证书都放在一个文件夹里,我这里有个程序启动后就到服务器端的那个文件夹下拉取所有的证书

#17


服务端什么都不做,你客户端要下载服务器上的文件。

你自己觉得这个要求是不是有点过份?传送文件要么HTTP,FTP。。或者自定义二进制协议,不管什么方式你在服务器端都需要一个可以响应的程序。你即然已经有Tomcat了,可以直接在Tomcat上部署一个应用,使用这个应用来将文件应答给你的客户端。

#18


。。。楼主为什么不肯百度下URLConnection的用法?

http://www.baidu.com/baidu?wd=URLConnection&tn=monline_dg

#19


其实现在我也遇到了这个问题了 采用httpUrlconnection 根本就实现不了 操作的都是服务器端的文件  而且我需要的是将服务器上的文件不要打包下载到客户端 所有不得行 不过采取共享文件夹的方式貌似是可以 可以试试!就不知道满足你的需求不!

#20


请问楼主是怎么解决的,我页遇到了和你一样的情况,要把服务器上的一个文件夹下的所有文件都下载下来,求方法,最好是全部代码,我是新手,说的太复杂,也看不明白

#21