iOS項目之wifi局域網傳輸文件到iPhone的簡單實現

        現在手機發展很是迅速,app的種類也琳琅滿目,而自從有了4G網以後,手機流量也愈來愈不夠用了。因此如今愈來愈多的app有了本地文件的管理功能,方便用戶隨意瀏覽手機文件的同時,也爲用戶節約了流量的使用。html

        如上面的app截圖中的功能,如今愈來愈多的app都具備了在電腦上經過網頁wifi傳輸文件到手機端的功能,不只有文字類,也有圖片類,還有視頻類,前提是電腦和手機都在同一個wifi下。這個功能的實現也很簡單,在這裏介紹兩種方式來實現這個功能。git

方式一:使用CocoaHTTPServer框架github

        CocoaHTTPServer在這裏就很少作介紹,若是沒有的話,能夠的GitHub上去下載:https://github.com/robbiehanson/CocoaHTTPServerweb

        下面開始簡單介紹一下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

 

        以上就是如今經常使用的兩種方式,你們能夠嘗試嘗試,一塊兒學習交流。

 

注:本文屬做者原創,轉載請附上文章出處,謝謝~~~~。

相關文章
相關標籤/搜索