Загрузка изображения с помощью AFNetworking 2.0
Я пытаюсь добавить фотографию к сообщению, используя AFNetworking 2.0. Это приложение для ios отправляет сообщение и фотографию в блог. Я не могу понять, почему изображения не загружаются.
Вот что я получил до сих пор:
// publish text and image
-(void)publishTextAndImage:(NSString*)resultDisplay and:(NSString*)subject with:(NSString*)nonce
{
imageData = UIImageJPEGRepresentation(selectedImage, 0.7); // create a data object from selected image
NSString *myUUID = [[NSUUID UUID] UUIDString]; // create a UUID
NSString *formatString = [NSString stringWithFormat:@"<img src="/wp-content/uploads/%@"/>",myUUID];
NSString *contentString = [formatString stringByAppendingString:resultDisplay];
NSString *moodString = [NSString stringWithFormat:@"%d",self.moodNumber];
NSDictionary *parameters = @{@"title":subject,
@"content":contentString,
@"status":@"publish",
@"author":@"wordpress",
@"user_password":@"xrayyankee",
@"nonce":nonce,
@"categories":moodString,
@"attachment":@"image/jpeg"};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:@"http://thrills.it/?json=posts/create_post"
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
if (selectedImage)
{
[formData appendPartWithFileData:imageData name:@"photo" fileName:myUUID mimeType:@"image/jpeg"];
}
}
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"Error: %@", error);
}];
}
Большое Спасибо
2 ответа:
Я использую AFNetworking следующим образом:
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://thrills.it/?json=posts"]]; NSURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:@"create_post" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { if (selectedImage) { [formData appendPartWithFileData:imageData name:@"photo" fileName:myUUID mimeType:@"image/jpeg"]; } } ]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { NSLog(@"JSON: %@", responseObject); } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { NSLog(@"Error: %@", error); }]; [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { float progressValue = (float)((double)totalBytesWritten/(double)totalBytesExpectedToWrite); NSLog(@"%f", progressValue); }]; [self.queue addOperation:operation];
.
@property (nonatomic, strong) NSOperationQueue *queue;
Мой клиент был создан раньше, но он был создан именно так.
Я надеюсь, что это поможет.
Я понял, код был в порядке, это была проблема с наименованием параметров, вот она:
// publish text and image -(void)publishTextAndImage:(NSString*)resultDisplay and:(NSString*)subject with: (NSString*)nonce { imageData = UIImageJPEGRepresentation(selectedImage, 0.7); // create a data object from selected image NSString *myUUID = [[NSUUID UUID] UUIDString]; // create a UUID NSString *formatString = [NSString stringWithFormat:@"<img src=\"/wp- content/uploads/%@\"/>",myUUID]; NSString *contentString = [formatString stringByAppendingString:resultDisplay]; NSString *moodString = [NSString stringWithFormat:@"%d",self.moodNumber]; NSDictionary *parameters = @{@"title":subject, @"content":contentString, @"status":@"publish", @"author":@"wordpress", @"user_password":@"xrayyankee", @"nonce":nonce, @"categories":moodString}; AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; [manager POST:@"http://thrills.it/?json=posts/create_post" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { if (selectedImage) { [formData appendPartWithFileData:imageData name:@"attachment" fileName:myUUID mimeType:@"image/jpeg"]; } } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"JSON: %@", responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }];
Таким образом, в основном я удалил параметр "attachment"из словаря параметров и изменил имя добавленного imageData на @"attachment". это была проблема wordpress JSON api, который был очень придирчивым (: