Я ударяю головой о стену с этим. Я хочу выбрать UIImage
из библиотеки и загрузить его на сервер, например on on t21. Вместо успеха я получил эту ошибку:
error = Error Domain = NSCocoaErrorDomain Code = 3840 "Операция не может быть завершена. (Cocoa ошибка 3840.)" (текст JSON не начинался с массива или объекта, а опция позволяла не устанавливать фрагменты.) UserInfo = 0x145e5d90 {NSDebugDescription = текст JSON не начинался с массива или объекта и не позволял фрагментам не задаваться.}
Я пробовал этот путь:
-(void)uploadPhoto{
NSString *path = @"http://blabla.request.cfm";
NSData *imageData = UIImageJPEGRepresentation(self.imageView.image, 0.9);
int priv = self.isPrivate ? 1 : 0;
NSDictionary *parameters = @{@"username": self.username, @"password" : self.password, @"private" : @(priv), @"photo" : imageData};
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager POST:path parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
if(self.imageView.image){
[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
}
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"[UploadVC] success = %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"[UploadVC] error = %@", error);
}];
[self blockView:self.view block:YES];
}
но он не работает... сервер говорит, что нет файла. Не уверен, что шифрование неверно, тип mime или что?
Пробовал и это:
[manager POST:path parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"[UploadVC] success = %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"[UploadVC] error = %@", error);
}];
и это:
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:path parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFormData:imageData name:@"photo"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"[UploadVC] success = %@", responseObject);
[self blockView:self.view block:NO];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"[UploadVC] error response.object = %@", operation.responseObject);
[self blockView:self.view block:NO];
}];
ничего не работает. Надеюсь, кто-то может помочь, потому что я застрял с ним и кружил от вопроса до вопроса здесь на SO
TIA
EDIT: новая попытка
1) сначала была многочастная форма
2) создание задачи загрузки
никто из них не работал у меня, поэтому я все еще пытаюсь справиться с этим, но не вижу никакого решения.