2015-08-17 2 views
0

Я пытаюсь отправить изображение в качестве байта [] на сервер. Когда я отправил его с POST-MAN, как html отправит файлы, он будет работать.Загрузка изображения на сервер (Objective C)

Но когда я пытаюсь послать от Objective C кода, он сентов иной массив байтов:

+ (void)uploadPhoto:(UIImage*)photo withCompletionBlock:(responceBlock)block 
{ 
AFHTTPRequestOperationManager* manager = [[AFHTTPRequestOperationManager alloc] init]; 
NSData* imageData = UIImageJPEGRepresentation(photo, 6); 
[manager.requestSerializer setValue:[UserDefaultsHelper getToken] forHTTPHeaderField:@"X-AUTH-TOKEN"]; 
AFHTTPRequestOperation* op = [manager POST:@"http://localhost:8080/image/save" 
parameters:@{} 
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
[formData appendPartWithFileData:imageData name:@"ParamFiles" fileName:@"photo2131231.jpg" mimeType:@"image/jpeg"]; 
} 
success:^(AFHTTPRequestOperation* operation, id responseObject) { 
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
} 
failure:^(AFHTTPRequestOperation* operation, NSError* error) { 
NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
}]; 
[op start]; 
} 

Ответ: Извините за глупый вопрос. Проблема, что на сервере я обрабатываю только двоичное изображение. Objective C code посылает мне multipart файлы, поэтому он содержит двоичное изображение с именем файла, mimetype и другими полями. Я преобразовал все в байты и попытался сохранить это как изображение. Конечно, сервер не может этого сделать.

+0

Итак, в чем проблема? Массив данных отличается? Или вы столкнулись с какой-либо ошибкой? –

+0

Когда я отправляю из IOS, он отправляет разные байты с разной длиной, поэтому на сервере он не может конвертироваться в BufferedImage (java) – annoirq

+0

Получаете ли вы свое изображение при использовании POST-MAN? –

ответ

0

Попробовать это

+ (void)uploadPhoto:(UIImage*)photo withCompletionBlock:(responceBlock)block 
{ 
    AFHTTPRequestOperationManager* manager = [[AFHTTPRequestOperationManager alloc] init]; 
    NSData* imageData = UIImageJPEGRepresentation(photo, 6); 
    [manager.requestSerializer setValue:[UserDefaultsHelper getToken] forHTTPHeaderField:@"X-AUTH-TOKEN"]; 

    NSMutableURLRequest * request = [manager.requestSerializer 
            multipartFormRequestWithMethod:@"POST" 
            URLString:@"http://localhost:8080/image/save" 
            parameters:nil 
            constructingBodyWithBlock:^(id<AFMultipartFormData> formData) 
            { 
             UIImage *image = [page.imageVersionObject imageForVersion:page.imageVersionObject.selectedVersion]; 
             if (image) { 

              [formData appendPartWithFileData:UIImageJPEGRepresentation(image, (CGFloat)0.85) 
                     name:@"file" 
                    fileName:@"fileName.jpg" 
                    mimeType:@"image/jpeg"]; 
             } 
            } 
            error:nil]; 

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

    operation.responseSerializer = [AFJSONResponseSerializer serializer]; 

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 
     //SUCCESS HERE!!! 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 

     //FAILURE HERE 
    }]; 

    [manager.operationQueue addOperation:operation]; 



} 

Не забудьте использовать имя файла и имя .... Я использовал мое для тестирования

+0

такой же .... Я думаю, может быть проблема с кодировкой – annoirq

+0

или, может быть, с multipart ...... – annoirq

+0

Я чувствую, что вам нужно проверить свою службу API, принимающую изображение –

Смежные вопросы