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