iOS项目之wifi局域网传输文件到iPhone的简单实现

摘要:
如上面的app截图中的功能,现在越来越多的app都具有了在电脑上通过网页wifi传输文件到手机端的功能,不仅有文字类,也有图片类,还有视频类,前提是电脑和手机都在同一个wifi下。这个功能的实现也很简单,在这里介绍两种方式来实现这个功能。所以文件的要求相对于这个文档根目录。

如今手机发展非常迅速,app的种类也琳琅满目,而自从有了4G网之后,手机流量也越来越不够用了。所以现在越来越多的app有了本地文件的管理功能,方便用户随意浏览手机文件的同时,也为用户节约了流量的使用。

iOS项目之wifi局域网传输文件到iPhone的简单实现第1张iOS项目之wifi局域网传输文件到iPhone的简单实现第2张iOS项目之wifi局域网传输文件到iPhone的简单实现第3张

如上面的app截图中的功能,现在越来越多的app都具有了在电脑上通过网页wifi传输文件到手机端的功能,不仅有文字类,也有图片类,还有视频类,前提是电脑和手机都在同一个wifi下。这个功能的实现也很简单,在这里介绍两种方式来实现这个功能。

方式一:使用CocoaHTTPServer框架

CocoaHTTPServer在这里就不多做介绍,如果没有的话,可以的GitHub上去下载:https://github.com/robbiehanson/CocoaHTTPServer

下面开始简单介绍一下CocoaHTTPServer的使用。

步骤1:

将CocoaHTTPServer框架中的文件导入项目中,需要的文件有:

1. Core文件夹下所有文件

2. Vendor文件夹下所有文件

3. Samples -> SimpleFileUploadServer -> SimpleFileUploadServer -> MyHTTPConnection.h + MyHTTPConnection.m + web文件夹下所有文件

文件参考以下图片:

iOS项目之wifi局域网传输文件到iPhone的简单实现第4张iOS项目之wifi局域网传输文件到iPhone的简单实现第5张

导入项目中后如下图所示:

iOS项目之wifi局域网传输文件到iPhone的简单实现第6张

步骤2:

在MyHTTPConnection.m 文件的 processStartOfPartWithHeader:方法中,找到对应的地方,修改文件存储位置(这里以Document为例),如下图所示:

iOS项目之wifi局域网传输文件到iPhone的简单实现第7张

步骤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 @interfaceViewController ()
15 /*httpServer */
16 @property (nonatomic, strong) HTTPServer *httpServer;
17 
18 @end
19 
20 @implementationViewController
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

现在就可以运行一下代码,如下图:

iOS项目之wifi局域网传输文件到iPhone的简单实现第8张

在网页输入ip地址和端口,就可以使用了。

iOS项目之wifi局域网传输文件到iPhone的简单实现第9张

demo下载:https://github.com/sjxjjx/HTTPServerDemo

方式二:使用GCDWebServer框架

同上面一样,首先去GitHub下载:https://github.com/swisspol/GCDWebServer

下面直接进入正题:

步骤1:

将GCDWebServer框架中的文件导入项目中,需要的文件有:

1. GCDWebDAVServer文件夹下所有文件

2. GCDWebServer文件夹下所有文件

3. GCDWebUploader文件夹下所有文件

文件参考以下图片:

iOS项目之wifi局域网传输文件到iPhone的简单实现第10张

步骤2:

添加动态库文件,如下图所示:

iOS项目之wifi局域网传输文件到iPhone的简单实现第11张

步骤3:

配置Header Search Paths ->$(SDKROOT)/usr/include/libxml2,如下图所示:

iOS项目之wifi局域网传输文件到iPhone的简单实现第12张

步骤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 @implementationViewController
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

现在就可以运行一下代码,如下图:

iOS项目之wifi局域网传输文件到iPhone的简单实现第13张

还是在网页中输入ip地址和端口试一试吧,效果如下图:

iOS项目之wifi局域网传输文件到iPhone的简单实现第14张

这个方式可以直接在网页中管理文件了,用起来还是很不错的哦~~

demo下载:https://github.com/sjxjjx/GCDWebServerDemo

以上就是现在常用的两种方式,大家可以尝试尝试,一起学习交流。

注:本文属作者原创,转载请附上文章出处,谢谢~~~~。

免责声明:文章转载自《iOS项目之wifi局域网传输文件到iPhone的简单实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nmon的安装及使用你不可不知的30个项目管理术语(中英文对照)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

[转]ios几种常用的XML解析器

SAX解析器是在你的代码分析器通知作为遍历XML树,你是通过负责保持跟踪状态和建设的任何对象你可能想游行保持分析器跟踪的数据。 DOM解析器读取整个文件,并建立了一个在内存中的表示,你可以查询不同的元素。 通常情况下,你甚至可以构建XPath查询退出特别件。   1、NSXMLParser是一个SAX解析器SDK中包含的iPhone默认的。 这是写在Obj...

Ubuntu16 编译源码安装MXNet 可变卷积Deformable-ConvNets GPU版

【引言】最近接手了公司的关于虫子识别的项目,使用MXNet框架开发,但是实际用的是Deformable-ConvNets. Deformable-ConvNets为微软研究研究院提出的可变卷积网络,可用于对图像中大小不一的物体识别,不是单单识别图中的猫和狗(它们都一般大小),而识别图像中不同种类的虫子(虫子本身小,而且难以区分),在这样的场景下很适合用可变...

Ubuntu常用软件安装

1.搜狗拼音输入法安装 https://ywnz.com/linuxjc/2891.htmlhttps://cloud.tencent.com/developer/article/1341770 2.谷歌安装: wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd6...

WKWebView使用遇到的一些坑

https://www.jianshu.com/p/c73bd50560ee WKWebView使用遇到的坑 简介 使用WKWebView一段时间,发现它和UIWebView的一些区别之处,有一写遇到的坑,现在对处理方式做了个小总结,现分享给大家. 区别 1.EvaluateJavaScript方法为异步 UIWebview: 在UIWebView中是...

Charles中文破解版下载安装及使用教程(附带免费下载链接)

一. 简介及安装 Charles 是在 PC 端常用的网络封包截取工具,但它不仅仅能在pc端使用,还可以在手机ios和安卓端都可以使用。我们在做移动开发或者测试网页app时候,为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了一般的调试,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charle...

Android测试:从零开始1——简介

参考文档:https://developer.android.com/training/testing/start/index.html 测试分类 使用android studio进行测试,首先需要先了解android测试的分类,新建工程后,项目会默认包含两个测试目录: 1、本地单元测试(Local unit tests) 测试代码位于module-nam...