現在手機發展很是迅速,app的種類也琳琅滿目,而自從有了4G網以後,手機流量也愈來愈不夠用了。因此如今愈來愈多的app有了本地文件的管理功能,方便用戶隨意瀏覽手機文件的同時,也爲用戶節約了流量的使用。html
如上面的app截圖中的功能,如今愈來愈多的app都具備了在電腦上經過網頁wifi傳輸文件到手機端的功能,不只有文字類,也有圖片類,還有視頻類,前提是電腦和手機都在同一個wifi下。這個功能的實現也很簡單,在這裏介紹兩種方式來實現這個功能。git
方式一:使用CocoaHTTPServer框架github
CocoaHTTPServer在這裏就很少作介紹,若是沒有的話,能夠的GitHub上去下載:https://github.com/robbiehanson/CocoaHTTPServer。web
下面開始簡單介紹一下CocoaHTTPServer的使用。服務器
步驟1:app
將CocoaHTTPServer框架中的文件導入項目中,須要的文件有:框架
1. Core文件夾下全部文件tcp
2. Vendor文件夾下全部文件工具
3. Samples -> SimpleFileUploadServer -> SimpleFileUploadServer -> MyHTTPConnection.h + MyHTTPConnection.m + web文件夾下全部文件 學習
文件參考如下圖片:
導入項目中後以下圖所示:
步驟2:
在 MyHTTPConnection.m 文件的 processStartOfPartWithHeader: 方法中,找到對應的地方,修改文件存儲位置(這裏以Document爲例),以下圖所示:
步驟3:
配置 httpServer。代碼中有一個獲取ip地址的方法,能夠在網上搜,只要能獲取到手機設備的ip地址就能夠了,而後封裝成一個工具類(SJXCSMIPHelper)。
1 // 2 // ViewController.m 3 // HTTPServerDemo 4 // 5 // Created by shapp on 2017/8/25. 6 // Copyright © 2017年 sjx. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "HTTPServer.h" 11 #import "MyHTTPConnection.h" 12 #import "SJXCSMIPHelper.h" 13 14 @interface ViewController () 15 /* httpServer */ 16 @property (nonatomic, strong) HTTPServer *httpServer; 17 18 @end 19 20 @implementation ViewController 21 22 - (void)viewDidLoad { 23 [super viewDidLoad]; 24 25 // 建立服務器 26 self.httpServer = [[HTTPServer alloc] init]; 27 // 設置發佈服務器的類型 28 [self.httpServer setType:@"_http._tcp."]; 29 // webPath是server搜尋HTML等文件的路徑 30 NSString *webPath = [[NSBundle mainBundle] resourcePath]; 31 /* 32 * 設置文檔根目錄 33 * 由於請求 /index.html 將引用index.html文件在文檔根目錄。因此文件的要求相對於這個文檔根目錄。 34 */ 35 [self.httpServer setDocumentRoot:webPath]; 36 // 設置鏈接類 37 [self.httpServer setConnectionClass:[MyHTTPConnection class]]; 38 NSError *err; 39 if ([self.httpServer start:&err]) { 40 NSString *ipString = [SJXCSMIPHelper deviceIPAdress]; 41 NSLog(@"ip地址爲:%@", ipString); 42 NSUInteger port = [self.httpServer listeningPort]; 43 NSLog(@"開啓監聽的端口爲:%zd", port); 44 }else{ 45 NSLog(@"%@",err); 46 } 47 } 48 49 @end
如今就能夠運行一下代碼,以下圖:
在網頁輸入ip地址和端口,就可使用了。
demo下載:https://github.com/sjxjjx/HTTPServerDemo
方式二:使用GCDWebServer框架
同上面同樣,首先去GitHub下載:https://github.com/swisspol/GCDWebServer。
下面直接進入正題:
步驟1:
將GCDWebServer框架中的文件導入項目中,須要的文件有:
1. GCDWebDAVServer文件夾下全部文件
2. GCDWebServer文件夾下全部文件
3. GCDWebUploader文件夾下全部文件
文件參考如下圖片:
步驟2:
添加動態庫文件,以下圖所示:
步驟3:
配置Header Search Paths -> $(SDKROOT)/usr/include/libxml2,以下圖所示:
步驟4:
配置webServer,並實現代理方法。
1 // 2 // ViewController.m 3 // GCDWebServerDemo 4 // 5 // Created by shapp on 2017/8/25. 6 // Copyright © 2017年 sjx. All rights reserved. 7 // 8 9 #import "ViewController.h" 10 #import "GCDWebUploader.h" 11 #import "SJXCSMIPHelper.h" 12 13 @interface ViewController ()<GCDWebUploaderDelegate> 14 /* webServer */ 15 @property (nonatomic, strong) GCDWebUploader *webServer; 16 17 @end 18 19 @implementation ViewController 20 21 - (void)viewWillAppear:(BOOL)animated { 22 [super viewWillAppear:animated]; 23 24 // 文件存儲位置 25 NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; 26 // 建立webServer,設置根目錄 27 self.webServer = [[GCDWebUploader alloc] initWithUploadDirectory:documentsPath]; 28 // 設置代理 29 self.webServer.delegate = self; 30 self.webServer.allowHiddenItems = YES; 31 // 開啓 32 if ([_webServer start]) { 33 NSString *ipString = [SJXCSMIPHelper deviceIPAdress]; 34 NSLog(@"ip地址爲:%@", ipString); 35 NSUInteger port = self.webServer.port; 36 NSLog(@"開啓監聽的端口爲:%zd", port); 37 } else { 38 NSLocalizedString(@"GCDWebServer not running!", nil); 39 } 40 } 41 42 - (void)viewDidDisappear:(BOOL)animated { 43 [super viewDidDisappear:animated]; 44 45 [self.webServer stop]; 46 self.webServer = nil; 47 } 48 49 #pragma mark - <GCDWebUploaderDelegate> 50 - (void)webUploader:(GCDWebUploader*)uploader didUploadFileAtPath:(NSString*)path { 51 NSLog(@"[UPLOAD] %@", path); 52 } 53 54 - (void)webUploader:(GCDWebUploader*)uploader didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath { 55 NSLog(@"[MOVE] %@ -> %@", fromPath, toPath); 56 } 57 58 - (void)webUploader:(GCDWebUploader*)uploader didDeleteItemAtPath:(NSString*)path { 59 NSLog(@"[DELETE] %@", path); 60 } 61 62 - (void)webUploader:(GCDWebUploader*)uploader didCreateDirectoryAtPath:(NSString*)path { 63 NSLog(@"[CREATE] %@", path); 64 } 65 66 @end
如今就能夠運行一下代碼,以下圖:
仍是在網頁中輸入ip地址和端口試一試吧,效果以下圖:
這個方式能夠直接在網頁中管理文件了,用起來仍是很不錯的哦~~
demo下載:https://github.com/sjxjjx/GCDWebServerDemo
以上就是如今經常使用的兩種方式,你們能夠嘗試嘗試,一塊兒學習交流。
注:本文屬做者原創,轉載請附上文章出處,謝謝~~~~。