如今手機發(fā)展非常迅速趁矾,app的種類也琳瑯滿目拐迁,而自從有了4G網之后窗宇,手機流量也越來越不夠用了。所以現(xiàn)在越來越多的app有了本地文件的管理功能鳖谈,方便用戶隨意瀏覽手機文件的同時,也為用戶節(jié)約了流量的使用嘱蛋。
如上面的app截圖中的功能蚯姆,現(xiàn)在越來越多的app都具有了在電腦上通過網頁wifi傳輸文件到手機端的功能,不僅有文字類洒敏,也有圖片類龄恋,還有視頻類,前提是電腦和手機都在同一個wifi下凶伙。這個功能的實現(xiàn)也很簡單郭毕,在這里介紹兩種方式來實現(xiàn)這個功能。
使用CocoaHTTPServer框架
CocoaHTTPServer在這里就不多做介紹函荣,如果沒有的話显押,可以的GitHub上去下載:https://github.com/robbiehanson/CocoaHTTPServer。
下面開始簡單介紹一下CocoaHTTPServer的使用傻挂。
步驟1:
CocoaHTTPServer框架中的文件導入項目中乘碑,需要的文件有:
- Core文件夾下所有文件
- Vendor文件夾下所有文件
- Samples -> SimpleFileUploadServer -> SimpleFileUploadServer -> MyHTTPConnection.h + MyHTTPConnection.m + web文件夾下所有文件
文件參考以下圖片:
步驟2:
在 MyHTTPConnection.m 文件的 processStartOfPartWithHeader: 方法中,找到對應的地方金拒,修改文件存儲位置(這里以Document為例)兽肤,如下圖所示:
步驟3:
配置 httpServer。代碼中有一個獲取ip地址的方法绪抛,可以在網上搜资铡,只要能獲取到手機設備的ip地址就可以了,然后封裝成一個工具類(SJXCSMIPHelper)幢码。
//
// ViewController.m
// HTTPServerDemo
//
// Created by shapp on 2017/8/25.
// Copyright ? 2017年 sjx. All rights reserved.
//
#import "ViewController.h"
#import "HTTPServer.h"
#import "MyHTTPConnection.h"
#import "SJXCSMIPHelper.h"
@interface ViewController ()
/* httpServer */
@property (nonatomic, strong) HTTPServer *httpServer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 創(chuàng)建服務器
self.httpServer = [[HTTPServer alloc] init];
// 設置發(fā)布服務器的類型
[self.httpServer setType:@"_http._tcp."];
// webPath是server搜尋HTML等文件的路徑
NSString *webPath = [[NSBundle mainBundle] resourcePath];
/*
* 設置文檔根目錄
* 因為請求 /index.html 將引用index.html文件在文檔根目錄笤休。所以文件的要求相對于這個文檔根目錄。
*/
[self.httpServer setDocumentRoot:webPath];
// 設置連接類
[self.httpServer setConnectionClass:[MyHTTPConnection class]];
NSError *err;
if ([self.httpServer start:&err]) {
NSString *ipString = [SJXCSMIPHelper deviceIPAdress];
NSLog(@"ip地址為:%@", ipString);
NSUInteger port = [self.httpServer listeningPort];
NSLog(@"開啟監(jiān)聽的端口為:%zd", port);
}else{
NSLog(@"%@",err);
}
}
@end
現(xiàn)在就可以運行一下代碼症副,如下圖:
在網頁輸入ip地址和端口店雅,就可以使用了政基。
demo下載:https://github.com/sjxjjx/HTTPServerDemo
使用GCDWebServer框架
同上面一樣,首先去GitHub下載:https://github.com/swisspol/GCDWebServer底洗。
下面直接進入正題:
步驟1:
將GCDWebServer框架中的文件導入項目中腋么,需要的文件有:
- GCDWebDAVServer文件夾下所有文件
- GCDWebServer文件夾下所有文件
- GCDWebUploader文件夾下所有文件
文件參考以下圖片:
步驟2:
添加動態(tài)庫文件,如下圖所示:
步驟3:
配置Header Search Paths -> $(SDKROOT)/usr/include/libxml2亥揖,如下圖所示:
步驟4:
配置webServer珊擂,并實現(xiàn)代理方法。
//
// ViewController.m
// GCDWebServerDemo
//
// Created by shapp on 2017/8/25.
// Copyright ? 2017年 sjx. All rights reserved.
//
#import "ViewController.h"
#import "GCDWebUploader.h"
#import "SJXCSMIPHelper.h"
@interface ViewController ()<GCDWebUploaderDelegate>
/* webServer */
@property (nonatomic, strong) GCDWebUploader *webServer;
@end
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
// 文件存儲位置
NSString* documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject];
// 創(chuàng)建webServer,設置根目錄
self.webServer = [[GCDWebUploader alloc] initWithUploadDirectory:documentsPath];
// 設置代理
self.webServer.delegate = self;
self.webServer.allowHiddenItems = YES;
// 開啟
if ([_webServer start]) {
NSString *ipString = [SJXCSMIPHelper deviceIPAdress];
NSLog(@"ip地址為:%@", ipString);
NSUInteger port = self.webServer.port;
NSLog(@"開啟監(jiān)聽的端口為:%zd", port);
} else {
NSLocalizedString(@"GCDWebServer not running!", nil);
}
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[self.webServer stop];
self.webServer = nil;
}
#pragma mark - <GCDWebUploaderDelegate>
- (void)webUploader:(GCDWebUploader*)uploader didUploadFileAtPath:(NSString*)path {
NSLog(@"[UPLOAD] %@", path);
}
- (void)webUploader:(GCDWebUploader*)uploader didMoveItemFromPath:(NSString*)fromPath toPath:(NSString*)toPath {
NSLog(@"[MOVE] %@ -> %@", fromPath, toPath);
}
- (void)webUploader:(GCDWebUploader*)uploader didDeleteItemAtPath:(NSString*)path {
NSLog(@"[DELETE] %@", path);
}
- (void)webUploader:(GCDWebUploader*)uploader didCreateDirectoryAtPath:(NSString*)path {
NSLog(@"[CREATE] %@", path);
}
@end
現(xiàn)在就可以運行一下代碼费变,如下圖:
還是在網頁中輸入ip地址和端口試一試吧摧扇,效果如下圖:
這個方式可以直接在網頁中管理文件了,用起來還是很不錯的哦~~
demo下載:https://github.com/sjxjjx/GCDWebServerDemo
以上就是現(xiàn)在常用的兩種方式挚歧,大家可以嘗試嘗試扛稽,一起學習交流。