2016-12-09 1 views
0

Je suis en train d'envoyer des données de formulaire qui a une image et 2 nsstrings à un fichier php et je veux envoyer uiimage .image avec le nom de "document" et un nsstring avec le nom de "nom" et un autre nsstring avec le nom de "userid".Télécharger le formulaire avec l'image et nsstrings au fichier PHP

Voici mon code jusqu'à présent.

NSData *imageData = UIImageJPEGRepresentation(Myimage.image, 1.0); 
       if (imageData != nil) 
       { 
        NSString *filename = [NSString stringWithFormat:@"%@",name];  //set name here 
        NSLog(@"%@", filename); 
        NSString *urlString = @"http://URL/upload.php"; 
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
        [request setURL:[NSURL URLWithString:urlString]]; 
        [request setHTTPMethod:@"POST"]; 
        NSString *boundary = @"---------------------------14737809831466499882746641449"; 
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary]; 
        [request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

        NSMutableData *body = [NSMutableData data]; 
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"filenames\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[filename dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[NSData dataWithData:imageData]]; 
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [request setHTTPBody:body]; 
        NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; 
        NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding]; 
        NSLog(@"%@", returnString); 
        NSLog(@"finish"); 
} 
+0

vous pouvez le faire en utilisant afnetworking qu'il est facile à utiliser pour le téléchargement. – KKRocks

+0

Pouvez-vous s'il vous plaît annonce un exemple de code ou de toute référence sur afnetworking! – WaqasArshad

Répondre

0

Essayez d'utiliser Afnetworking 3,0

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"your server url" parameters:@{@"parameter_1":@"string 1",@"parameter_2":@"string 2"} constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
      if (image) { 
       [formData appendPartWithFileData:UIImageJPEGRepresentation(image, 0.8) name:imagename fileName:@"recipeImage.jpg" mimeType:@"image/jpeg"]; 
      } 

     }error:nil]; 

     AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 
     manager.responseSerializer = [AFJSONResponseSerializer serializer]; 

     NSURLSessionUploadTask *uploadTask; 
     uploadTask = [manager 
         uploadTaskWithStreamedRequest:request 
         progress:^(NSProgress * _Nonnull uploadProgress) { 
          dispatch_async(dispatch_get_main_queue(), ^{ 
          }); 
         } 
         completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) { 
          if (error) { 
           NSLog(@"Error: %@", [[NSString alloc]initWithData:[[error valueForKey:@"userInfo"] valueForKey:@"com.alamofire.serialization.response.error.data"] encoding:NSUTF8StringEncoding]); 

          } else { 
           NSLog(@"%@",responseObject);// your response here 
           callback(YES,responseObject); 
          } 
         }]; 

     [uploadTask resume]; 
+0

Merci. Laissez-moi essayer celui-ci et je vous le ferai savoir. – WaqasArshad

+0

Bienvenue @WaqasArshad – KKRocks

-1
NSData *dataImage = UIImagePNGRepresentation(yourImage); 

NSString *imageBase64 = [dataImage base64forData]; 

- (NSString*)base64forData 
{ 
    const uint8_t* input = (const uint8_t*)[self bytes]; 
    NSInteger Datalength = [self length]; 

    static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/="; 

    NSMutableData* data = [NSMutableData dataWithLength:((Datalength + 2)/3) * 4]; 
    uint8_t* output = (uint8_t*)data.mutableBytes; 

    NSInteger i; 
    for (i=0; i < Datalength; i += 3) { 
     NSInteger value = 0; 
     NSInteger j; 
     for (j = i; j < (i + 3); j++) { 
      value <<= 8; 

      if (j < Datalength) { 
       value |= (0xFF & input[j]); 
      } 
     } 

     NSInteger theIndex = (i/3) * 4; 
     output[theIndex + 0] =     table[(value >> 18) & 0x3F]; 
     output[theIndex + 1] =     table[(value >> 12) & 0x3F]; 
     output[theIndex + 2] = (i + 1) < Datalength ? table[(value >> 6) & 0x3F] : '='; 
     output[theIndex + 3] = (i + 2) < Datalength ? table[(value >> 0) & 0x3F] : '='; 
    } 

    return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding]; 


} 
+0

qu'est-ce que c'est ?? avez-vous lu ma question? – WaqasArshad