ios 参考部分

AFMultipartFormData协议说明

2017-07-12  本文已影响767人  _阿南_

声明处:AFURLRequestSerialization.h


概述

AFMultipartFormData协议定义的方法是为AFHTTPRequestSerializer的- multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock方法中块的参数提供的。

任务

实例方法

appendPartWithFileData:name:fileName:mimeType:

- (void)appendPartWithFileData:(NSData *)data name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType

讨论

追加HTTP头Content-Disposition:file; filename=#{filename}; name=#{name}Content-Type:#{mimeType}, 其次是编码的文件数据和多部分表单边界。

参数

data

被编码的数据,追加到表单数据。

name

指定数据关联的名称。这个参数不能为nil。

fileName

指定数据关联的文件名称。这个参数不能为nil。

mimeType

指定数据的MIME类型。(举个例子,JPEG图片的MIME类型为image/jpeg)有效的MIME类型列表,详见http://www.iana.org/assignments/media-types/ .这个参数不能为nil。

声明处

AFURLRequestSerialization.h

appendPartWithFileURL:name:error

- (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name error:(NSError *_Nullable __autoreleasing *)error

讨论

追加HTTP头Content-Disposition: file; filename=#{generated filename}; name=#{name}Content-Type:#{generated mimeType},其次是编码的文件数据和多部分表单边界。
分别使用fileURL中最后的路径部分和文件URL扩展的系统关联MIME类型,在表单中数据的文件名和MIME类型将自动生成。

参数

fileURL

追加到表单的文件内容对应的URL。这个参数不能为nil。

name

指定数据相关联的名称。这个参数不能为nil。

error

如果一个错误发生,返回一个包含描述问题的NSError对象。

返回值

如果文件数据追加成功,返回YES,否者返回NO。

声明处

AFURLRequestSerialization.h

appendPartWithURL:name:fileName:mimeType:error

- (BOOL)appendPartWithFileURL:(NSURL *)fileURL name:(NSString *)name fileName:(NSString *)fileName mimeType:(NSString *)mimeType error:(NSError *_Nullable __autoreleasing *)error

讨论

追加到HTTP头Content-Disposition: file; filename=#{filename}; name = #{name}Content-Type: #{mimeType}, 其次是编码的文件数据和多部分表单边界。

参数

fileURL

追加到表单的文件内容对应的URL。这个参数不能为nil。

name

指定数据相关联的名称。这个参数不能为nil。

fileName

在Content-Disposition头中使用的文件名称。这个参数不能为nil。

mimeType

文件数据的公开的MIME类型。这个参数不能为nil。

error

如果一个错误发生,返回一个包含描述问题的NSError对象。

返回值

如果文件数据追加成功,返回YES,否者返回NO。

声明处

AFURLRequestSerialization.h

appendPartWithFormData:name:

- (void)appendPartWithFormData:(NSData *)data name:(NSString *)name

讨论

追加HTTP头Content-Disposition: form-data; name=#{name}, 其次编码的数据和多部分表单的边界。

参数

data

被编码的数据,并追加到表单的数据。

name

根据指定数据相关联的名称。这个参数不能为nil。

声明处

AFURLRequestSerialization.h

appendPartWithHeaders:body:

- (void)appendPartWithHeaders:(nullable NSDictionary<NSString*,NSString*> *)headers body:(NSData *)body

讨论

追到HTTP头,其次为编码数据和多部分表单边界。

参数

header

被追到表单数据的HTTP头。

body

被编码的数据并追加到表单数据。这个参数不能为nil。

声明处

AFURLRequestSerialization.h

appendPartWithInputStream:name:filename:length:mimeType:

- (void)appendPartWithInputStream:(nullable NSInputStream *)inputStream name:(NSString *)name fileName:(NSString *)fileName length:(int64_t)length mimeType:(NSString *)mimeType

讨论

追加HTTP头Content-Dispostion: file; filename=#{filename}; name=#{name}Content-Type:#{mimeType}, 其次是输入流的数据和多部分表单边界。

参数

inputStream

被追加到表单数据的输入流。

name

与指定输入流相关联的名称。这个参数不能为nil。

fileName

与制定输入流相关联的文件名称。这个参数不能为nil。

length

指定输入流的字节长度。

mimeType

指定数据的MIME类型。(举例, 一个JPEG图片的MIME类型为image/jpeg)一个有效MIME类型的列表,详见http://www.iana.org/assignments/media-types/。这个参数不能nil。

声明处

AFURLRequestSerialization.h

throttleBandwidthWithPacketSize:delay:

- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes delay:(NSTimeInterval)delay

讨论

通过限制包的大小来控制请求带宽,为从上传流中读取每个大块添加延迟。
当通过3G或EDGE链接上传时,请求可能报“请求体流耗尽”的失败。依据建议的值(kAFUploadStreamGSuggestedPacketSize和 kAFUploadStream3GSuggestedDelay)设置一个最大的包大小和延迟,降低输入流分配过多的带宽的风险。同时,不建议你只基于网络可达性来限制带宽。替代的,你应该考虑在一个失败的块中检查“请求体流耗尽”,同时用限制带宽来重试请求。

参数

numberOfBytes

包的最大字节数。默认的输入流包大小为16kb。

delay

每次读取一个包的延时间隔。默认情况下,不设置延时。

声明处

AFURLRequestSerialization.h

// END 应该好好看看API啊,并看看怎么实现的。仅仅会用觉得没有安全感啊。

上一篇下一篇

猜你喜欢

热点阅读