客户端文件上传服务器(AF)

客户端文件上传服务器看我就够了(支持14中文件格式上传)

由于项目需求,要上传文件到服务器,以前也做过,但是两次所采用的协议有所不同.所以纠结了一天终于搞好了,而且文件格式支持14种.
先来看看后台商定的上传文件协议:HTTP multipart/form-data
如果你们公司后台也是接受这种协议上传文件的话,那么我可以说你已经完成了,因为我已经替你们填了一次这个坑了.啊哈哈哈哈.可能有点嚣张了.
那么支持的文件格式都有哪些了:txt、doc、xls、docx、xlsx、jpg、jpeg、gif、png、pdf、mp3、mp4、ppt、pptx
这么多的个是你应该做够了吧.
如果还不够就联系我,或者自己去尝试尝试写写.毕竟路很长,还是要自己慢慢一步步走的.
好了废话不多说了,先说一下,我分别采用了AFNetworking3.1.0最新版本和AFNetworking2.6版本.分被采用AFHTTPRequestOperationManager,和AFHTTPSessionManager.是不是我做的很全面.

先说2.6版本的文件上传.看代码再BB

AFHTTPRequestOperationManager上传文件


看到了我竟文件上传进行了封装,并且通过block进行回调,将成功和失败的结果带出.

先看需要的参数都有一个NSData类型,一个是KFileMineType类型,然后就没有了.

好了进入方法内部看看:

看到第一个的时候可能有些同学不明白KFileMineType这个枚举到底是什么东西,不要慌继续往下看,你就会明白的.现在看这张图的第一句,我给字典写了一个分类,有一个mimeType方法,来获取一个字典,然后将枚举传入,最终这个字典会返回上传文件所需的参数mimeType和文件后缀名也就是.ppt等然后上传文件时,后台有时需要让你携带参数,但是我的这次是没有的所以就是nil,第二个适用于其他接口,所以在文件上传时也为nil,URL为上传文件的后台地址,cmd可能和你们就无关了,我们后台定义的而已一会你就知道干什么了.然后就是上传文件所需要的data和mimeType,fileType.成功和失败的blcok.




上面这段是上传文件时,第一个调用的方法,作用是来配置上传文件时post请求所携带的参数,这段大家可以省略,因为各个服务器的参数都不同所以,大家可以跳过这个方法,
再看下面这个方法的调用是创建AFHTTPRequestOperationManager,并且对responseSerializer

做出设置,代码如下:


if是我判断接口是不是上传文件.

然后就是开始请求上传图片的步骤了

AF提供了上传的方法,我们只是添加一下上传文件然后上传就OK了.然后判断后台返回的code如果成功就将返回结果返回,如果失败就返回失败原因.
现在我们来看一下大家疑惑的那个枚举都是什么:




这个枚举其实代表的都是文件格式.
那么最后是如何将枚举转成字符串的啦.那就要大家移步到我定义的那个字典的分类中去看那个方法.


通过这个方法,我可以将传入的枚举值转换成我所需要的文件格式和mimetype,再通过字典返回.这样就完成了转换.那么还有人会问,你的这写个mimeType是怎么搞出来的.那么就在下面我会讲一下是怎么做的.我给字符串也谢了一个扩展.

这个文件必须导入af,因为这个方法内部很多都是来自MobileCoreServices.framework.但是af中已经有了这个库,所以我们直接引入af就可以了.

看到这里基本的文件上传就完成了,包括14中文件格式.本人亲身测试过,都能完成文件上传.

AFHTTPRequestOperationManager的就讲完了,下面就是使用最新版的af上传文件,基本上都是相同的不同的地方只有网络请求这块发生不同.先看代码.

使用AFHTTPSessionManager上传文件

都只苹果放弃了NSURLConnect,引入了NSURLSession,这也是af最新版本的请求方式,采用session来发起网络请求.

换汤不换药,基本上都是类似的.代码就在上面,如果有需要可以参考一下.

猜你喜欢

转载自blog.csdn.net/CrazyDuang/article/details/52711203