上传图片时出现问题



第一步:在这里我创建请求

NSMutableURLRequest *request1 = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST"
                                                                                           URLString:[NSString stringWithFormat:@"%@%@", API_MAIN_URL, IMAGE_UPLOAD]
                                                                                          parameters:param constructingBodyWithBlock:^(id formData) {
           [formData appendPartWithFileURL:[NSURL fileURLWithPath:strImagePath] 
                                      name:@"sendimage" 
                                  fileName:[strImagePath lastPathComponent] 
                                  mimeType:@"image/png"
                                     error:nil];
                                       } error:nil];
[request1 setValue:authToken forHTTPHeaderField:@"Authorization"];

步骤2:这里我在给定位置创建流

[[AFHTTPRequestSerializer serializer] requestWithMultipartFormRequest:request1 
                                          writingStreamContentsToFile:[NSURL fileURLWithPath:[strImagePath stringByDeletingPathExtension]] 
                                                    completionHandler:^(NSError *error){

步骤3:这里我正在创建上传任务。

        ///here is file
        NSProgress *progress = nil;
        NSURLSessionUploadTask *uploadTask = [self.manager uploadTaskWithRequest:request1
                                                                        fromFile:[NSURL fileURLWithPath:strImagePath]
                                                                        progress:&progress
                                                               completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
                                                                       NSLog(@"response : %@nn responseObject : %@nn error : %@", response, responseObject, error);
                                                               }];
        [uploadTask resume];
    }
                                                    }];
}

我的问题是在应用程序进入后台模式之前,我想在给定位置使用步骤:1和步骤:2编写所有请求HTTPBody (HTTPStream),并在文件(在应用程序前台)中写入所有HTTPStream后将所有请求保存到NSArray中,同时我会显示图像准备上传。

然后我将在Step3的帮助下开始创建后台任务:将请求传递到我已存储在NSArray中的请求。使用这种方法,我无法上传图像。

但是如果我一个接一个地调用所有步骤,那么它将在服务器上上传图像,但是使用这种方法,我的应用程序应该在前台创建请求,因为我们需要在给定位置编写HTTPBody

请帮助我解决这个问题,我被困在这个从过去的两个星期。我的应用程序需要在服务器上上传超过500张图片。

试试

 NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
                [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil];
            } error:nil];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
        NSProgress *progress = nil;
        NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
            if (error) {
                NSLog(@"Error: %@", error);
            } else {
                NSLog(@"%@ %@", response, responseObject);
            }
        }];
        [uploadTask resume];

我已经完成了这个任务,创建所有的上传任务而不恢复它们,并在创建后将每个任务保存在NSArray中。一旦所有的任务都被创建,然后调用一个方法来恢复所有的任务。

相关内容

  • 没有找到相关文章

最新更新