2016-07-21 4 views
0

Hier ist, was ich bisher versucht habe:Was ist der einfachste Weg, um eine Stimme und ein Bild in einem Dateiformat in Ziel-c durch POST-Methode zusammen mit Textdaten auf den Server hochzuladen?

-(void)postMethod_Param 
{  
    NSString *[email protected]"http://192.168.1.139:49/api//Grievance/PostCreateRequest"; 
    NSString *bodydata =[NSString stringWithFormat:@"&user_fb_id=%@&status=%d",fbUserId,status]; 

} 
+0

Ich habe meine Antwort Bruder bearbeitet es funktioniert jetzt perfekt. – user3182143

+0

Sitaram naidu hast du meinen Code benutzt? – user3182143

Antwort

0

Wenn Sie Server

Pick-Bild aus der Galerie Daten zu stellen und es zu Array speichern

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image=[info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    imageView.image=image; 
    [arrayImage addObject:image]; 
    picker.delegate =self; 
    [picker dismissViewControllerAnimated:YES completion:nil]; 
} 

Zum Speichern Bild als Pfad und auch in Pfad als String konvertieren

for (UIImage *img in array_Image) 
{ 
    int i=0; 
    NSString *pathName =nil; 
    NSString *file_name = [[self getCurrentDate]stringByAppendingString:[self getCurrentTime]]; 
    file_name =[file_name stringByAppendingPathExtension:@"jpeg"]; 
    NSArray *paths1 =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *basePath =([paths1 count] >i) ? [paths1 objectAtIndex:i] : nil; 
    NSString *path = [basePath stringByAppendingPathComponent:@"Photo"]; 
    //Get Directory in FileManager 
    NSFileManager *fileManager =[NSFileManager defaultManager]; 
    if ([fileManager fileExistsAtPath:path]) 
    return; 
    [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:nil]; 
    pathName =[path stringByAppendingPathComponent:file_name]; 
    NSData *imgData =UIImageJPEGRepresentation(image, 0.4); 
    [imgData writeToFile:pathName atomically:YES]; 
    [arryImagePath addObject:pathName]; 
} 

Ich rufe t er unter Methoden in file_name

+(NSString*)getCurrentTime 
{ 
    //Get Current Time for saving Images 
    NSString *path =nil; 
    NSDateFormatter *timeFormatter =[[NSDateFormatter alloc]init]; 
    [timeFormatter setDateFormat:@"HH:mm:ss.SSS"]; 
    NSDate *now = [[NSDate alloc]init]; 

    NSString *str_time = [timeFormatter stringFromDate:now]; 
    NSString *curr_time; 
    curr_time =[str_time stringByReplacingOccurrencesOfString:@"." withString:@""]; 

    path = [NSString stringWithFormat:@"%@",curr_time]; 

    return path; 
} 
+(NSString*)getCurrentDate 
{ 
    NSString *today =nil; 

    NSDateFormatter *dateFormatter1; 
    dateFormatter1 =[[NSDateFormatter alloc]init]; 
    [dateFormatter1 setDateFormat:@"d MMM yyyy"]; 
    NSDate *now =[[NSDate alloc]init]; 
    NSLocale *usLocale =[[NSLocale alloc]initWithLocaleIdentifier:@"en_US"]; 
    [dateFormatter1 setLocale:usLocale]; 
    NSString *str_date =[dateFormatter1 stringFromDate:now]; 
    today=[NSString stringWithFormat:@"%@",str_date]; 
    return today; 
} 

In obigen Code Wenn Sie die arryImagePath drucken Sie können das Bild path.Before sehen, die Sie benötigen zuzuteilen und die arryImagePath und array_image zu initialisieren.

Für Daten in Server

NSURL *url = [NSURL URLWithString:urlString]; 
NSString *output = [NSString stringWithContentsOfURL:url encoding:0 error:&error]; 
NSLog(@"%@",output); 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[url standardizedURL]]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]]; 

NSData *strJsondata=[NSData dataWithBytes:[output UTF8String] length:[output length]]; 
//If the response is dictionary...... 
NSDictionary *responseDict = strJsondata ? [NSJSONSerialization JSONObjectWithData:strJsondata options:0 error:&error] : nil; 
+0

wie man Bild und auch Sprachclip in Dateiformat umwandelt und auf Server hochlädt, war ich Erfolg, den Text vom Textfeld sendend, aber ich schicke Bilder und Sprachclips zum Server –

+0

von der Galerie nicht, die ich das Bild zum Bediener übermitteln muss im Dateiformat –

+0

Überprüfen Sie meine Antwort, es funktioniert perfekt. – user3182143

0

Um eine Datei auf dem Server hochladen Posting benötigen Sie eine mehrteilige Anfrage zu machen, die ich schlage vor, Sie AFNetworking zu verwenden, das zu tun! Wenn Sie ein mehrteiliges Beispiel mit AFNetworking benötigen, können Sie this oder (Upload an image with AFNetworking 2.0) Link sehen. Hoffe, dass diese Links Ihnen helfen könnten.

aktualisieren : Um Bild und Stimme auf dem Server Sie sie in Datendatei konvertieren müssen zu laden, sein ist, wie Sie Bilddaten und laden Sie es auf dem Server zu konvertieren:

NSData *imageData = UIImageJPEGRepresentation(selectedImage, 1.0f); 

Dann brauchen Sie auf eine Anfrage:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
[manager POST:stringURL parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    // If you have image you need to do this : 
    NSString *fileName = @"Some name"; 
    if (imageData) [formData appendPartWithFileData:imageData name:@"photo" fileName:fileName mimeType:@"image/jpeg"]; 

} success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    // Everything is ok 
    NSLog(@"Success (%d): %@\n\n", (int) operation.response.statusCode, responseObject); 
    if (success) success(responseObject); 

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

    // Ops ! we have error 
    NSLog(@"Failure (%d): %@\n\n", (int) operation.response.statusCode, [error localizedDescription]); 
    if (failure) failure(nil); 
}]; 

Wichtige: achten sie auf MIME-Typ und den Namen, müssen sie die gleichen Namen und die Art von Server angefordert werden.