FTP文傳協議的應用,FTP文傳協議應用

來源:互聯網
上載者:User

FTP文傳協議的應用,FTP文傳協議應用

我開發的項目中一直用到都是AFNetworking上傳圖片的方法,最近老大說要用FTP上傳,網上的資料很少,畢竟這種上傳方式現在用的不多了,於是花了一天時間學習了FTP檔案傳輸通訊協定。下面是我的個人理解:

首先介紹下FTP是個什麼東東?

    FTP 是File Transfer Protocol(檔案傳輸通訊協定)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制檔案的雙向傳輸。同時,它也是一個應用程式(Application)。 基於不同的作業系統有不同的FTP應用程式,而所有這些應用程式都遵守同一種協議以傳輸檔案。在FTP的使用當中,使用者經常遇到兩個概念:"下載" (Download)和"上傳"(Upload)。"下載"檔案就是從遠程主機(可以理解為另一個伺服器)拷貝檔案至自己的電腦上;"上傳"檔案就是將檔案從自己的電腦中拷貝至 遠程主機上。用Internet語言來說,使用者可通過客戶機程式向(從)遠程主機上傳(下載)檔案。(摘自百度)註:若使用本機FTP地址,那麼本機就相當於一個遠程主機。

多說無益,下面我就已上傳相簿中的圖片到FTP:

  1,在上傳之前肯定是要開啟FTP

  用FTP的話,高版本的mac os預設關掉了,可以用如下命令開啟:

  sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist

  相應的,要關閉則:

  sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist     Mac內建的伺服器工具可以查看FTP檔案:教程http://jingyan.baidu.com/article/7c6fb42869cd2380642c90af.html  (訪問的使用者名稱和密碼是登入mac系統的使用者名稱和密碼)。

 

2,在馬代碼之前需要下載一個第三方FTP檔案管理SDK  https://github.com/ZCasey/GRRequestsManager 

3,開始馬代碼!

  思路:a.從相簿中取出照片存入指定檔案夾(應用中)

     b.在ftp中建立檔案夾,再將圖片上傳至此檔案夾中

         data = dataImage;         NSDateFormatter *formate = [[NSDateFormatter alloc] init];         formate.dateFormat = @"yyyy-MM-dd HH:mm:ss";         NSString *documentPath = [NSHomeDirectory() stringByAppendingPathComponent:@"document"];         //開啟檔案管理工具         NSFileManager *fileMange = [NSFileManager defaultManager];         //建立檔案夾         [fileMange createDirectoryAtPath:documentPath withIntermediateDirectories:YES attributes:nil error:nil];         //建立檔案         NSString *localpath =[NSString stringWithFormat:@"%@/%@.jpg",documentPath,[formate stringFromDate:[NSDate date]]];         NSLog(@"圖片路徑   %@ :",localpath)         [fileMange createFileAtPath:[NSString stringWithFormat:@"%@/%@.jpg",documentPath,[formate stringFromDate:[NSDate date]]] contents:data attributes:nil];         
      //(需引入標頭檔#import "GRRequestsManager.h")
      GRRequestsManager * requestManager = nil; //設定FTP請求 requestManager = [[GRRequestsManager alloc] initWithHostname:@"ftp://********" user:@"*****" password:@"*********"]; //FTP設定代理 requestManager.delegate = self; //建立目錄層上傳檔案 [requestManager addRequestForCreateDirectoryAtPath:@"ZZTest"]; [requestManager startProcessingRequests]; NSString *ftpPath = [NSString stringWithFormat:@"ZZTest/11111.jpg"] [self.requestManager addRequestForUploadFileAtLocalPath:localpath toRemotePath:ftpPath]; [self.requestManager startProcessingRequests];

         GRRequestsManager的代理方法

#pragma mark - GRRequestsManagerDelegate- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didScheduleRequest:(id<GRRequestProtocol>)request{    NSLog(@"1_requestsManager:didScheduleRequest:");}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteListingRequest:(id<GRRequestProtocol>)request listing:(NSArray *)listing{    NSLog(@"2_requestsManager:didCompleteListingRequest:listing: \n%@", listing);}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteCreateDirectoryRequest:(id<GRRequestProtocol>)request{   //建立檔案夾成功    NSLog(@"3_requestsManager:didCompleteCreateDirectoryRequest:");}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteDeleteRequest:(id<GRRequestProtocol>)request{    NSLog(@"4_requestsManager:didCompleteDeleteRequest:");}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompletePercent:(float)percent forRequest:(id<GRRequestProtocol>)request{    NSLog(@"5_requestsManager:didCompletePercent:forRequest: %f", percent);}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteUploadRequest:(id<GRDataExchangeRequestProtocol>)request{   //檔案上傳成功    NSLog(@"6_requestsManager:didCompleteUploadRequest:");}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didCompleteDownloadRequest:(id<GRDataExchangeRequestProtocol>)request{    NSLog(@"7_requestsManager:didCompleteDownloadRequest:");}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didFailWritingFileAtPath:(NSString *)path forRequest:(id<GRDataExchangeRequestProtocol>)request error:(NSError *)error{    NSLog(@"8_requestsManager:didFailWritingFileAtPath:forRequest:error: \n %@", error);}- (void)requestsManager:(id<GRRequestsManagerProtocol>)requestsManager didFailRequest:(id<GRRequestProtocol>)request withError:(NSError *)error{    NSLog(@"9_requestsManager:didFailRequest:withError: \n %@", error);}

 

 

            

 

 

 

 

    

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.