Проблема при загрузке изображения

Шаг 1: здесь я создаю запрос

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 : %@\n\n responseObject : %@\n\n error : %@", response, responseObject, error);

                                                               }];
        [uploadTask resume];
    }
                                                    }];
}

Моя проблема заключается в том, что перед тем, как приложение перейдет в фоновый режим, я хочу написать весь запрос HTTPBody(HTTPStream) в заданном месте с использованием шагов: 1 и шаг: 2 и сохранить весь запрос в NSArray после записи всех HTTPStream в файле (в приложении Передний план) означает, что пока я покажу изображение, готовящееся к загрузке.

затем я начну создавать фоновую задачу с помощью Шага 3: с передачей запроса в этот запрос, который я сохранил в файле NSArray. с таким подходом я не могу загружать изображения.

Но если я вызову все шаги вместе один за другим, он загрузит изображение на сервер, но при таком подходе мое приложение должно быть на переднем плане для запроса на создание, потому что нам нужно написать HTTPBody в заданном месте.

Пожалуйста, помогите мне решить эту проблему, я застрял на этом с последних 2 недель. Моему приложению требовалось более 500 изображений, загруженных на сервер.


person Sumeet Mourya    schedule 15.05.2015    source источник
comment
Загрузка 500 изображений через сервер. вовремя?   -  person Nitin Gohel    schedule 15.05.2015
comment
stackoverflow.com/a/19841957/2518805 попробуйте это   -  person sanjeet    schedule 15.05.2015
comment
@NitinGohel, это приложение представляет собой альбомную печать тех фотографий, которые вы выбрали, затем выполните необходимые действия после этого, начните загрузку с задачей фоновой загрузки. мы создаем фоновую задачу для каждого отдельного изображения.   -  person Sumeet Mourya    schedule 15.05.2015
comment
@sanjeet это будет работать, только если приложение находится на переднем плане, потому что, когда вы хотите загрузить такое количество изображений на сервер, нам нужен какой-то фоновый процесс, который возможен только с помощью служб фоновой передачи ссылка   -  person Sumeet Mourya    schedule 15.05.2015
comment
Проверьте это: stackoverflow.com/questions/8861390/ для установки длительной задачи, когда вы используете приложение в фоновом режиме   -  person Nitin Gohel    schedule 15.05.2015


Ответы (2)


попробуй так

 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];
person Community    schedule 15.05.2015
comment
Этот запрос использует Stream, и для задачи фоновой загрузки нам нужно использовать FileURL uploadTaskWithRequest:request fromFile Документ Apple - person Sumeet Mourya; 15.05.2015

Я выполнил эту задачу, создаю все задачи загрузки, не возобновляя их, и сохраняю каждую задачу в NSArray после создания. Как только все задачи созданы, вызовите метод, в котором мы возобновим все задачи.

person Sumeet Mourya    schedule 08.06.2015
comment
Я работаю над тем же требованием. Не могли бы вы поделиться кодом для достижения того же в фоновом режиме? Я хочу загрузить на сервер до 100 фотографий. - person Nirmit Dagly; 04.12.2015
comment
@NirmitDagly Можете ли вы попробовать это? [ссылка] stackoverflow.com/questions/30215551/, потому что я реализую этот код в проекте, а не в отдельном проекте или библиотеке. - person Sumeet Mourya; 10.12.2015