AFNetworking 不允许上传大文件
Posted
技术标签:
【中文标题】AFNetworking 不允许上传大文件【英文标题】:AFNetworking won't allow large file upload 【发布时间】:2013-10-15 18:22:58 【问题描述】:使用 AFNetworking,我正在尝试上传尺寸为 33695 的图像 (1280x990)。下面的代码适用于较小的图像(即:390x390),但较大的图像会引发错误:
[client POST:@"/upload_image" parameters:nil constructingBodyWithBlock:^(id <AFMultipartFormData>formData)
[formData appendPartWithFileData:imageData name:@"image" fileName:@"image.jpg" mimeType:@"image/jpeg"];
success:^(NSURLSessionDataTask * task, id responderData)
failure:^(NSURLSessionDataTask * task, NSError * error)
];
抛出错误:
NSDebugDescription = "JSON text did not start with array or object and option to allow fragments not set.";
我搜索了许多其他帖子,似乎没有任何内容涉及较大图像尺寸的问题。有什么建议吗?
【问题讨论】:
该错误是否是由于服务器发回非 JSON 响应而引发的?收到的实际响应是什么。您是否使用 Charles 来查看实际发送/接收的内容? 该错误不是服务器发回非 JSON 响应的结果,我使用了 Charles,甚至没有服务器调用发出。但是,对于较小的图像(即:我将图像大小调整为 320x320),呼叫就会结束,一切都很好。似乎 AFHTTPSessionManager 不喜欢较大的文件。 这是服务器端问题。服务器向您发送错误的 json 请联系服务器人员。 【参考方案1】:根据 AFNetworking 的作者,请改用 appendPartWithFileURL。因为数据将从磁盘流式传输。
【讨论】:
【参考方案2】:我在尝试使用 AFNetworking 时遇到了类似的问题。从那以后,我转而使用 RestKit 和 SDWebImage 来处理图像的异步加载和缓存......它就像一个魅力。您可能想看一下 Quora 上的这篇文章,以更好地比较它们之间的差异......主要是 Restkit 的一个缺点是异步和缓存,但 SDWebImage 只需一行代码就可以轻松解决这个问题。
http://www.quora.com/ios-Development/RestKit-vs-AFNetworking-What-are-the-pros-and-cons
【讨论】:
以上是关于AFNetworking 不允许上传大文件的主要内容,如果未能解决你的问题,请参考以下文章
iOS-AFNetworking3.0上传大量(1000张)图片到服务器