精华内容
下载资源
问答
  • 下载ftp中的目录

    万次阅读 2018-06-26 19:00:34
     那么可以选择一个取巧的办法下载ftp服务器中的目录,那就是wget命令比如ftp服务器(IP:192.16.1.123,端口:21)在test目录下有个download目录,要将其下载下来,假设账户和密码均为ftp。$ wget ftp://192.16.1....

       ftp本身不提供目录下载命令,不管get还是mget都只能下载文件,区别在于mget可以下载多个文件,而get只能下载单个文件。

       那么可以选择一个取巧的办法下载ftp服务器中的目录,那就是wget命令

    比如ftp服务器(IP:192.16.1.123,端口:21)在test目录下有个download目录,要将其下载下来,假设账户和密码均为ftp。

    $ wget ftp://192.16.1.123:21/test/download --ftp-user=ftp --ftp-password=ftp -r

    如此即可把整个download目录下载下来。-r用了下载目录


    若要将ftp整个下载下来:

    $ wget ftp://192.16.1.123:21/* --ftp-user=ftp --ftp-password=ftp -r

    *号不能丢,否则只能下载下来一个index索引文件

    当然用wget并不能完全解决问题,比如一个Android源码,由于其目录层次太深,太复杂,wget可能会出现下载不完全的情况。


    当然向这种下载目录的行为是很傻的,而上传这个目录的人更傻,将目录打个包岂不是利人利己。

    下载文件,尤其是zip等二进制文件时,切记将ftp切换到binary模式,否则可能会丢失一些东西。

    展开全文
  • cmd下载ftp文件

    千次阅读 2016-03-18 12:15:08
    通过命令下载ftp文件步骤: 1.cmd 进入dos命令 2.输入ftp,切换到ftp下 3.open ip 打开要访问的ftp资源 4.输入用户名,密码 5.pwd 打印当前路径,cd 切换到资源路径 6.dir 显示路径下所有文件 7.lcd 路径,...

    通过命令下载ftp文件步骤:
    1.cmd 进入dos命令
    2.输入ftp,切换到ftp下
    3.open ip 打开要访问的ftp资源
    4.输入用户名,密码
    5.pwd 打印当前路径,cd 切换到资源路径
    6.dir 显示路径下所有文件
    7.lcd 路径,文件要下载到本地位置
    8.mget 文件名,下载文件
    9.bye 退出ftp

    操作步骤如图:
    这里写图片描述
    ps:电脑上没有图片工具,做的有点糙。

    展开全文
  • C#下载ftp指定目录下所有文件。ftp地址、目录名、保存路径都写入了代码中,用户可根据需要自己修改即可。可下载目录下所有文件和文件夹。注解较少,我也是参照网上写的,本机运行正常。
  • 这篇博文基于libcurl库实战之下载ftp文件并实时显示百分比,当然了,基本后续的所有功能添加都会基于该博文,关于ftp下载的相关知识可以在链接博文中找到 ftp主动模式下载: 该功能在libcurl下也不过是一个参数设置...

    前言

    由于某些需求,可能要求在下载时使用ftp主动模式下载,关于ftp的主、被动模式这里我就不多做解释,有兴趣的可以自己百度

    相关知识

    这篇博文基于libcurl库实战之下载ftp文件并实时显示百分比,当然了,基本后续的所有功能添加都会基于该博文,关于ftp下载的相关知识可以在链接博文中找到

    ftp主动模式下载:

    该功能在libcurl下也不过是一个参数设置而已

    //设置主动模式
    curl_easy_setopt(curl,CURLOPT_FTPPORT,"192.168.6.174:100000-110000");

    curl_easy_setopt(curl,CURLOPT_FTPPORT,"192.168.6.174:0");

    这两句都是设置主动模式的语句,区别就是上面那句设定了具体的主动端口区间,在连接时只能选择100000-110000区间的空闲端口号,关于这里端口号区间的选择,本人理解是能大就大,ftp的本身占用20,21两个端口(默认情况下),21端口可以修改,因此你的端口区间可能被用作其他ftp的端口号,所以这个区间能大就大,当然了,如果没有特殊需求,可以使用下面的语句进行主动模式设置

    下面这句设置的0是什么意思呢?意思就是主动模式下,任意挑选本地空闲的端口号来进行数据传送,这个是不是很方便呢,哈哈哈

    代码

    #include <string>
    #include <iostream>
    #include <fstream>
    #include <stdio.h> 
    #include "curl.h"
    #include <stdio.h>
    using namespace std;
    
    
    #pragma comment(lib,"libcurl.lib")
    
    
    struct FtpFile 
    {
    	const char *filename;
    	FILE *stream;
    };
    
    
    static size_t FetchFiles(void *buffer, size_t size, size_t nmemb, void *stream)
    {
    	struct FtpFile *out = (struct FtpFile *)stream;
    	if (out && !out->stream) 
    	{
    		// open file for writing 
    		out->stream = fopen(out->filename, "wb");
    		if (!out->stream)
    			return -1; // failure, can't open file to write
    	}
    	return fwrite(buffer, size, nmemb, out->stream);
    }
    
    
    int my_progress_func(char *progress_data,  
    					 double t, /* dltotal */  
    					 double d, /* dlnow */  
    					 double ultotal,  
    					 double ulnow)  
    {  
    	printf("%s %g / %g (%g %%)\n", progress_data, d, t, d*100.0/t);  
    	return 0;  
    }  
    
    
    int DownloadFtpFile()
    {
    	CURL *curl;
    	CURLcode res;
    	 char *progress_data = "* ";
    	struct FtpFile ftpfile = {
    		"E:\\vs文档\\1031CURL_TEST\\FtpDownLoad\\UltraEdit-32.rar", // name to store the file as if succesful//
    		NULL         
    	};
        
    	curl_global_init(CURL_GLOBAL_DEFAULT);
    	curl = curl_easy_init();
    
    	if (curl) 
    	{
    		curl_easy_setopt(curl, CURLOPT_URL,"ftp://ljl:521125@192.168.6.174:21/UltraEdit-32(UE)/UltraEdit-32.rar");
    		curl_easy_setopt(curl, CURLOPT_USERPWD, "ljl:521125");
    
    		//设置主动模式
    		//curl_easy_setopt(curl,CURLOPT_FTPPORT,"192.168.6.174:100000-110000");
    
    		curl_easy_setopt(curl,CURLOPT_FTPPORT,"192.168.6.174:0");
    
    		// Define our callback to get called when there's data to be written //
    		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, FetchFiles);
    		// Set a pointer to our struct to pass to the callback //
    		curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);
    
    
    		curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
    		curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);  
    		curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, progress_data);  
    
    		// Switch on full protocol/debug output //
    		//curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    
    		res = curl_easy_perform(curl);
    
    		// always cleanup 
    		curl_easy_cleanup(curl);
    
    		if (CURLE_OK != res) 
    		{
    			//we failed 
    			fprintf(stderr, "curl told us %d\n", res);
    		}
    	}
    
    	if (ftpfile.stream)
    		fclose(ftpfile.stream); // close the local file 
    
    	curl_global_cleanup();
    
    	getchar();
    
    	return 0;
    }
    
    
    int main(void)
    {
    	DownloadFtpFile();
    	return 0;
    }
    

    后续

    该片博文的代码承袭链接的博文,有不清楚的可以去链接博文查看

    运行结果

    展开全文
  • libcurl 下载ftp服务器全部文件

    万次阅读 2016-07-20 23:27:17
    原:... 最近做的一个任务,项目的需求,需要下载ftp上的全部文件,没有上传,只有下载,利用libcurl库,现在只做了linux版本。 头文件: [cpp] view plain copy #ifndef FTP_DOWNL

    原:http://blog.csdn.net/mp295345033/article/details/49487347

    最近做的一个任务,项目的需求,需要下载ftp上的全部文件,没有上传,只有下载,利用libcurl库,现在只做了linux版本。

    头文件:

    [cpp]  view plain  copy
    1. #ifndef FTP_DOWNLOAD_H  
    2. #define FTP_DOWNLOAD_H  
    3. #include <iostream>  
    4. #include <functional>  
    5. using namespace std;  
    6.   
    7. typedef std::function<void(string &localpath,string &filename)> FileDownloadedCallBack;  
    8.   
    9. class FtpDownloadder  
    10.   
    11. {  
    12. public:  
    13.        FtpDownloadder(const char *ip,const char *port,const char *username,const char *password);  
    14.        ~FtpDownloadder();  
    15.        bool Download(FileDownloadedCallBack callBack);  
    16. private:  
    17.        string m_ip;  
    18.        string m_port;  
    19.        string m_username;  
    20.        string m_password;  
    21.        FileDownloadedCallBack m_callBack;  
    22.          
    23.        bool Getlist(string &remotpath,string &myfloderlist,string &localpath);//获得每一个ftp目录的文件列表  
    24.        bool Downloadfile(string &remotpath,string &filename,string &localpath);//下载文件  
    25.        void Getfirstchar(string &filename,char &fistchar);//对文件名的操作  
    26. };  
    27.   
    28.   
    29. #endif   

    cpp文件:

    [cpp]  view plain  copy
    1. #include "download.h"  
    2. #include <stdio.h>  
    3. #include <iostream>  
    4. #include <curl/curl.h>  
    5. #include <fstream>  
    6. #include <string.h>  
    7. #include <vector>  
    8. #include <sys/stat.h>    
    9. #include <sys/types.h>   
    10. using namespace std;  
    11.   
    12.  struct FtpFile  
    13.   {  
    14.       string local;  
    15.       FILE *stream;  
    16.   };  
    17. FtpDownloadder::FtpDownloadder(const char *ip,const char *port,const char *username,const char *password)  
    18. {  
    19.        m_ip = ip;  
    20.        m_port = port;  
    21.        m_username = username;  
    22.        m_password = password;  
    23. };  
    24. FtpDownloadder::~FtpDownloadder(){};  
    25.   
    26.    
    27. bool FtpDownloadder::Getlist(string &remotpath,string &myfloderlist,string &localpath)  
    28. {  
    29.   CURL *curl;  
    30.   CURLcode res;  
    31.   char fistchar;  
    32.   FILE *ftpfile;  
    33.   string filename;  
    34.   int i=0;  
    35.   char listbuf[200];  
    36.     /* local file name to store the file as */   
    37.   ftpfile = fopen((myfloderlist+".txt").c_str(), "wb"); /* b is binary, needed on win32 */   
    38.   curl = curl_easy_init();  
    39.     
    40.   if(curl) {  
    41.     /* Get a file listing from sunet */   
    42.     curl_easy_setopt(curl, CURLOPT_URL, remotpath.c_str());  
    43.     curl_easy_setopt(curl, CURLOPT_USERNAME, m_username.c_str());  
    44.     curl_easy_setopt(curl, CURLOPT_PASSWORD, m_password.c_str());  
    45.     curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile);  
    46.     res = curl_easy_perform(curl);  
    47.     /* Check for errors */   
    48.       
    49.     if(res != CURLE_OK)  
    50.       fprintf(stderr, "curl_easy_perform() failed: %s\n",  
    51.               curl_easy_strerror(res));  
    52.    
    53.     /* always cleanup */   
    54.     curl_easy_cleanup(curl);  
    55.   }  
    56.   fclose(ftpfile);   
    57.   string strFtpListFile = myfloderlist+".txt";  
    58.   ifstream infile(strFtpListFile.c_str());  
    59.   if(!infile.is_open())  
    60.   {  
    61.         cout << "can not open ftpList.txt" << endl;  
    62.         return false;  
    63.         //return -1;  
    64.   }  
    65.   while(getline(infile,filename))  
    66.   {  
    67.         Getfirstchar(filename,fistchar);  
    68.         string nextdir = remotpath + filename + "/";  
    69.         string localpath1 = localpath + "/" + filename;  
    70.         strcpy(listbuf,strFtpListFile.c_str());  
    71.         sprintf(listbuf,"%d",i);  
    72.         string myfloderlist(listbuf);  
    73.         string folderlist=myfloderlist+".txt";  
    74.         i++;  
    75.         if('d'==fistchar)  
    76.         {  
    77.               
    78.             int err=mkdir(localpath1.c_str(),S_IRWXU);  
    79.                 if(-1==err)  
    80.                 {  
    81.                     cout<<"error mkdir "<<endl;  
    82.                 }     
    83.              
    84.               
    85.             Getlist(nextdir,myfloderlist,localpath1);  
    86.                            
    87.         }  
    88.         else  
    89.         {  
    90.             string remotpath2=remotpath;  
    91.            if(Downloadfile(remotpath2,filename,localpath))  
    92.            {  
    93.                if (m_callBack!=NULL)  
    94.                m_callBack(localpath,filename);  
    95.            }  
    96.            else  
    97.            {  
    98.                cout << "download error";  
    99.                return false;  
    100.            }  
    101.             //vector<string> vec;  
    102.             //vec.pushback(localpath);  
    103.         }  
    104.   }  
    105.     /* close the local file */  
    106.     return true;  
    107.   
    108. }  
    109.   
    110. int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream)  
    111. {  
    112.      struct FtpFile *out=(struct FtpFile *)stream;  
    113.       if(out && !out->stream)  
    114.           {     
    115.             /* open file for writing */   
    116.             out->stream=fopen((out->local).c_str(), "ab+");  
    117.             if(!out->stream)  
    118.             return -1; /* failure, can't open file to write */   
    119.           }  
    120.      return fwrite(buffer, size, nmemb, out->stream);  
    121. }  
    122.   
    123. bool FtpDownloadder::Downloadfile(string &remotpath,string &filename,string &localpath)  
    124. {  
    125.   CURL *curl;  
    126.   CURLcode res;   
    127.    
    128.     
    129.       
    130.   curl_global_init(CURL_GLOBAL_DEFAULT);  
    131.     
    132.     
    133.       // long getlocal ;  
    134.       //FILE *destFilePath;  
    135.          
    136.       int use_resume = 0;  
    137.       curl_off_t local_file_len = -1 ;   
    138.       struct stat file_info;    
    139.     
    140.       if(stat(localpath.c_str(), &file_info) == 0)    
    141.        {    
    142.           local_file_len = file_info.st_size;     
    143.           use_resume = 1;    
    144.        }    
    145.          
    146.        struct FtpFile ftpfile=  
    147.         {  
    148.          localpath+"/"+filename, /* name to store the file as if successful */   
    149.          NULL  
    150.         };  
    151.        curl = curl_easy_init();  
    152.        if(curl)   
    153.   
    154.        {  
    155.         curl_easy_setopt(curl, CURLOPT_URL, (remotpath+filename).c_str());          
    156.         curl_easy_setopt(curl, CURLOPT_USERNAME, m_username.c_str());  
    157.         curl_easy_setopt(curl, CURLOPT_PASSWORD, m_password.c_str());   
    158.         //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 1);  
    159.         curl_easy_setopt(curl, CURLOPT_RESUME_FROM_LARGE, use_resume?local_file_len:0);  
    160.         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);  
    161.         curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);  
    162.         curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);  
    163.         res = curl_easy_perform(curl);    
    164.           curl_easy_cleanup(curl);  
    165.        }  
    166.           
    167.    curl_global_cleanup();  
    168.    return true;  
    169. }  
    170.   
    171. void FtpDownloadder::Getfirstchar(string &filename,char &fistchar)  
    172. {  
    173.     vector<string>v1(sizeof(filename), filename);  
    174.     vector<string>::iterator it = v1.begin();  
    175.     int err = it->find_last_of(' ');  
    176.     string filename1;  
    177.     filename1.assign(it->begin()+err+1, it->end());  
    178.     const char *p = filename.c_str();  
    179.     filename=filename1;  
    180.     fistchar = *p;  
    181. }  
    182.   
    183.   
    184.   
    185. bool FtpDownloadder::Download(FileDownloadedCallBack callBack)  
    186. {  
    187.     m_callBack=callBack;  
    188.     string remotpath="ftp://"+m_ip+":"+m_port+"/";  
    189.     string list="mylist";  
    190.     string localpath="/home/FtpServer/";  
    191.     int err=mkdir("/home/FtpServer",S_IRWXU);  
    192.                 if(-1==err)  
    193.                 {  
    194.                     return false;  
    195.                 }     
    196.     if(Getlist(remotpath,list,localpath))  
    197.     {  
    198.         return false;  
    199.     }  
    200.     return true;  
    201. }  
    测试:

    [cpp]  view plain  copy
    1. #include "download.h"  
    2. #include <iostream>  
    3. using namespace std;  
    4. int main()  
    5. {  
    6.     FileDownloadedCallBack callBack;  
    7.     FtpDownloadder *dl=new FtpDownloadder("192.168.1.1","21","zheng","yun");  
    8.     if(dl->Download(callBack))  
    9.     {  
    10.         cout<<"download over";  
    11.     }  
    12.     delete dl;  
    13.     return 0;  
    14. }  

    展开全文
  • linux中下载ftp文件

    千次阅读 2013-11-27 14:49:54
    一、最简单的方法: wget下面的命令用来下载ftp服务器上指定目录的所有文件[html] view plaincopyprint?wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r -r 参数表示递归下载;可以使用--directory...
  • 下载ftp文件,文件名乱码

    千次阅读 2019-04-17 09:27:35
    下载ftp文件,文件名乱码 点击下载之后,文件名显示如下图这种 在代码里加入下面代码 String userAgent=(String)request.getHeader(“USER-AGENT”); String filename=htHtjbxxbg.getHtmc()+".pdf"; if(-1!=...
  • linux中下载ftp文件的几个方法

    万次阅读 2019-04-20 00:41:08
    一、最简单的方法: wget ...下面的命令用来下载ftp服务器上指定目录的所有文件 wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r -r 参数表示递归下载; 可以使用--directory-prefix=/m...
  • wget下载FTP目录

    千次阅读 2012-12-13 19:16:37
    wget下载FTP目录 2010年11月05日 ⁄ linux, VPS ⁄ 暂无评论 ⁄ 被围观 541 views+ wget -nH --cut-dirs=* -m --ftp-user=* --ftp-password=* ftp://*.*.*.*/* -nH:不创建以主机名命名的目录。 --cut-...
  • C# 下载FTP服务器一个文件夹内的所有文件
  • 本代码以下载FTP服务器上某个目录下的所有文件为例。 如果需要下载某个目录下的.txt类型的所有文件,请把 mget *.* 改成 mget *.txt 如果需要下载某个目录下的某一个文件a.txt,请把 mget *.* 改成 get ...
  • Java实现FTP文件下载1.后端实现2.前端实现 1.后端实现 package com.harvey.ftp.util; import org.apache.commons.net.ftp.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spring...
  • 本代码以下载FTP服务器上某个目录下的所有文件为例。 如果需要下载某个目录下的.txt类型的所有文件,请把mget *.*改成mget *.txt 如果需要下载某个目录下的某一个文件a.txt,请把mget *.*改成get a.txt @echo off...
  • BAT | 批处理下载ftp文件

    万次阅读 2017-05-09 16:05:50
    @echo offrem 指定FTP用户名 set ftpUser=*** rem 指定FTP密码 ...rem 指定待下载的文件位于FTP服务器的哪个目录 set ftpFolder=/pub/demo/install rem 指定从FTP下载下来的文件存放到本机哪个目录 set LocalF
  • 使用curl 命令上传下载FTP

    千次阅读 2020-09-04 16:11:18
    CURL命令行 常见操作 1、列出ftp服务器上的目录列表: curl ftp://www.xxx.com/ --user name:passwd curl ftp://www.xxx.com/ –u name:passwd #简洁写法1 ...3、下载一个文件: curl ftp://www.xxx.com/s.
  • 这是下载ftp文件的方法:public boolean DownFile(FTPClient ftp,String localdir,String filename){ try { ftp.enterLocalPassiveMode(); //通知服务器开通给一个端口,防止挂死 File localFile = new File...
  • 如何使用Python 下载FTP的文件

    万次阅读 2012-04-07 03:52:03
    如何使用Python 下载FTP的文件,在网上搜索了一下,发现这个还不错: #coding=utf-8 ''' ftp自动下载、自动上传脚本,可以递归目录操作 ''' from ftplib import FTP import os,sys,string,datetime,time ...
  • Java ftp实现文件的上传和下载 ftp,sftp 运行后发现很长时间没有反应,很久以后抛出如下异常:sun.net.ftp.FtpProtocolException:Welcome message: SSH-2.0-OpenSSH_5.1  但是在cmd中ftp是可以通过的,用...
  • Linux下使用wget下载FTP服务器文件

    千次阅读 2019-02-12 17:02:51
    wget ftp://ftp_user:password@ftp_ip/filename -P /  解释: ftp_user:ftp服务器用户名 ...- P :下载到指定目录 举例: wget ftp://test1:12345678@172.16.10.60/source01/1.mp4 -P /home/admin...
  • 关于网页下载FTP里面的文件相关

    千次阅读 2018-01-11 14:39:31
    今天领导让我做个下载功能,开始写了个A链接下载,发现不对,原来是一个FTP里面的,做了相关映射,然后写了一大堆的代码如图  //基本设置  //static private string path = @"ftp://" + "117.40.131.154:1567" +...
  • linux下载ftp服务器文件

    千次阅读 2018-03-02 14:44:04
    wget -P 指定文件保存位置 ftp://ip:端口/文件夹 --ftp-user=用户名 --ftp-password=密码。-nH不创建服务器目录 可选-m 现在所有目录包文件(包含子目录)若无文件夹则端口后面最好添加/...
  • 今天要从ftp上下载东西,于是...如果是没有密码的ftp,直接wget ftp://111.222.33.4/path/filename,就可以下载ftp://111.222.33.4的文件夹path里的文件filename。 如果是有密码的ftp,则wget ftp://username:password
  • 批量下载FTP上的文件

    千次阅读 2015-10-11 16:59:11
    虽然可以使用客户端软件从FTP上批量下载文件,但是此类软件基本上都需要手工进行操作,这对于我们公司的情况,每时每刻都会有店铺的销售数据上传,这样的话手工进行下载就显得过于烦索。于是便想到了用批处理结合...
  • wget 下载ftp的通过用户名和密码的方式、请教!如何使用wget下载一个需要用户名和密码的ftp服务上的文件 .linux下载文件命令、wget通过shell运行FTP Wget实现上传下载,如果用wget下载有密码的ftp链接地址呢? ...
  • 本代码以下载FTP服务器上某个目录下的所有文件为例。 如果需要下载某个目录下的.txt类型的所有文件,请把 mget *.* 改成 mget *.txt 如果需要下载某个目录下的某一个文件a.txt,请把 mget *.* 改成 get a....
  • Python实现下载ftp图片

    千次阅读 2016-11-15 16:05:39
    由于做实验的需要到一些公开的数据集上去下载图片,所需的图片实例如下所示: 由于该数据集比较大 ,并且迅雷批量下载时有限制 ,一次不可以超过1000个文件 ,太不人性化了 ,于是决定用刚学的python来实现批量...
  • 一个java 下载FTP( Linux)服务器文件夹的例子 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.apache.commons.net.ftp.FTPClient; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 280,750
精华内容 112,300
关键字:

下载ftp