Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOs通过AFN网络上传多个文件_Ios_Xcode_File Upload_Afnetworking - Fatal编程技术网

iOs通过AFN网络上传多个文件

iOs通过AFN网络上传多个文件,ios,xcode,file-upload,afnetworking,Ios,Xcode,File Upload,Afnetworking,我在iPhone项目中使用AFnetworking,我是Objective C的初学者 我知道如何使用块上传多个文件,如下所述: 因此,我们可以在块中添加任意数量的formData元素 但在我的情况下,我不知道我会有多少张图片,因为用户可以自由选择很多。图片的数据被存储到一个数组中 所以我在块中尝试了类似的方法,但只上传了最后一个元素: for(NSDictionary *dict in imagesInfo) { UIImage *theFile = [dict objectF

我在iPhone项目中使用AFnetworking,我是Objective C的初学者

我知道如何使用块上传多个文件,如下所述:

因此,我们可以在块中添加任意数量的formData元素

但在我的情况下,我不知道我会有多少张图片,因为用户可以自由选择很多。图片的数据被存储到一个数组中

所以我在块中尝试了类似的方法,但只上传了最后一个元素:

for(NSDictionary *dict in imagesInfo) {

      UIImage *theFile = [dict objectForKey:UIImagePickerControllerOriginalImage];
      NSData *imageData = UIImageJPEGRepresentation(theFile, 0.5);
     [formData appendPartWithFileData:imageData name:@"name" fileName:@"name.jpg" mimeType:@"image/jpeg"];

}
无论如何,当第一个请求完成时,我可以通过启动另一个请求来让它工作。 但我想有一个最好的方法让它工作

很多坦克


鲁道夫

试试AsitpRequest图书馆。使用此库,您可以同时或逐个下载/上载多个文件:

AFNetworking有两个很好的实用程序用于管理“批量”请求。有3种方法,特别是您应该从AFHTTPclipse类考虑:

将批次的BatchOfHttPrequesStoperationsWithRequests//排入队列 将批次的BatchOfHttPrequestoperations//排入队列 为单个请求排队HttpRequestOperation//

基本上,您将循环浏览照片数组,并构建一个新的NSMutableURLRequest数组(与您现在可能正在做的非常类似)。对于每张照片,创建一个NSMutualableUrlRequest或一个HTTPRequestOperation并将其弹出到数组中。用户可以使用上述方法之一将新的HTTP URL请求数组传递给AFNetworking

如果要以批处理方式管理上载过程,请使用批处理方法之一。如果您只是想启动并忘记,请使用enqueueHTTPRequestOperation,它仍然会带给您所有的快乐

它看起来像这样:

AFHTTPClient *photoUploader = [[AFHTTPClient alloc] init];
[photoUploader enqueueBatchOfHTTPRequestOperationsWithRequests:self.photosWrappedInNSURLS   progressBlock:^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) {

    //block gets called after each succesful operation
    //useful for messages like 1 of 3 complete

} completionBlock:^(NSArray *operations) {

    //block gets called after all requests are complete
}];
如果您阅读了文档,他们会建议您创建自己的AFHTTPClient子类,并将其构造为单例。您不必这样使用它,但是如果您有多个类型的连接返回到同一主机或服务,那么它非常方便。我发现它在我的上一个项目中非常有用,并且取得了非常好的成功

希望有帮助
很好

您应该为每个文件指定不同的名称。我想这会解决问题。

我读到这句话的意思是“如果你不确定如何使用一个现代化的库,那么你应该找出如何使用一个不推荐使用的库。”这是一个糟糕的建议。许多人仍然在他们的项目中使用这个“不推荐使用的”库。它适用于所有版本的iOS。尽管如此,问题表明他们已经在使用一个库,并且想知道如何使用它。再说一遍,告诉他们如何使用不同且不受支持的库是没有帮助的。您是否尝试过更改每个附件的名称和文件名?