11. 比较三种网络框架上传图片过程中的不同点?
作者: 陈满iOS
AFNetworking 上传图片的步骤是利用图片设置到 request 的 HTTPBodyStream 中去,然后利用带有图片的 request 新建 task 上传。HYNetworking 内部实现上传图片的时候,其实就是采用 AFNetworking 关于上传图片的 API,都是 AFNetworking 里面一个 API。XMNetworking 上传图片请求也是基于 AFNetworking 上传进行的封装,不过比 HYNetworking 更加隐晦而已,另外它封装了上次图片数组的方法。
AFNetworking
压缩转换:
UIImage实例对象通过UIImageJPEGRepresentation(压缩)转换为 NSData,下面称之为imageData。信息整合:将
imageData与文件名fileName,文件路径name,类型名mimeType整合成图片模型(AFHTTPBodyPart)的一个对象bodyPart中去。添加图片模型:将上面新建好的图片模型对象
bodyPart,向图片输入流(AFMultipartBodyStream)的对象bodyStream的数组属性(HTTPBodyParts)添加。设置
request的HTTPBodyStream属性为bodyStream:封装为requestByFinalizingMultipartFormData将图片模型对象
formData用AFNetwork的POST请求与uploadTaskWithStreamedRequest方法进行上传。
HYBNetworking
压缩转换:
UIImage实例对象通过UIImageJPEGRepresentation压缩转换为NSData,下面称之为imageData。信息整合:利用
AFNetwork的appendPartWithFileData,将imageData与文件名fileName,文件路径 name,类型名mimeType整合成图片模型(AFStreamingMultipartFormData)的一个对象formData中去。将图片模型对象
formData用AFNetwork的POST请求与uploadTaskWithStreamedRequest方法进行上传。
XMNetworking
压缩转换:
UIImage实例对象通过UIImageJPEGRepresentation压缩转换为NSData,下面称之为imageData。信息整合:利用
AFNetwork的appendPartWithFileData,将imageData与文件名fileName,文件路径name,类型名mimeType整合成图片模型(XMUploadFormData)的一个对象formData中去。添加图片模型:向管理器的图片模型数组
uploadFormDatas添加上面新建好的图片模型对象formData。遍历图片模型数组,获得图片模型,利用
AFNetwork的POST请求与uploadTaskWithStreamedRequest方法进行上传。
【总结】 可见,上面三种框架都是基于 AFNetworking 进行的封装,实质的流程还是一样的。上传图片的流程图如下所示。

Last updated
Was this helpful?