AFNetworking Загрузка файла
Есть ли у кого-то полная реализация загрузки файла с использованием AFNetworking. Я нашел код в Интернете, но он неполный. Код, который я нашел, находится здесь:
AFHTTPClient *client= [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"http://my.client.server.com"]];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:[fieldName text] forKey:@"field01_nome"];
[parameters setObject:[fieldSurname text] forKey:@"field02_cognome"];
NSMutableURLRequest *myRequest = [client multipartFormRequestWithMethod:@"POST" path:@"/Contents/mail/sendToForm.jsp" parameters:parameters constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
[formData appendPartWithFileData:myNSDataToSend mimeType:@"image/jpeg" name:@"alleagto"];
}];
AFHTTPRequestOperation *operation = [AFHTTPRequestOperation HTTPRequestOperationWithRequest:myRequest success:^(id object) {
NSLog(@"Success");
} failure:^(NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Fail");
}];
[operation setUploadProgressBlock:^(NSInteger bytesWritten, NSInteger totalBytesWritten, NSInteger totalBytesExpectedToWrite) {
NSLog(@"Sent %d of %d bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
queue = [[[NSOperationQueue alloc] init] autorelease];
[queue addOperation:operation];
Я получаю ошибки в следующих строках:
[formData appendPartWithFileData:myNSDataToSend mimeType:@"image/jpeg" name:@"alleagto"];
В myNSDataToSend.
И здесь:
AFHTTPRequestOperation *operation = [AFHTTPRequestOperation HTTPRequestOperationWithRequest:myRequest success:^(id object) {
NSLog(@"Success");
} failure:^(NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Fail");
}];
Ошибка:
Метод класса '+ HTTPRequestOperationWithRequest: success: failure' not found (тип возврата по умолчанию - 'id')
Любая помощь по этому поводу и загрузка с помощью AFNetworks будут потрясающими.
Спасибо.
Ответы
Ответ 1
Сначала убедитесь, что вы загрузили последнюю версию AFNetworking.
AFHTTPRequestOperation +HTTPRequestOperationWithRequest:success:failure:
был удален несколько версий. Вместо этого вы можете сделать [[AFHTTPRequestOperation alloc] initWithRequest:...]
, а затем установить completionBlock
либо с помощью прямого доступа к свойствам (operation.completionBlock = ^{...}
), либо с помощью -setCompletionBlockWithSuccess:failure:
. Имейте в виду, что блоки завершения выполняются после завершения загрузки запроса.
Что касается блока многочастной формы, то -appendWithFileData:mimeType:name
также был удален обратно. Вам нужен -appendPartWithFileData:name:fileName:mimeType:
.
Сделайте эти два изменения, и все должно работать.