title: iphone: upload image to server using ASIFormDataRequest
body: <p>I have to upload an image to server for which I  wrote code using NSMutableURLRequest like this</p>
  
  <pre><code>NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
      NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
      [request addValue:contentType forHTTPHeaderField: @"Content-Type"];
  //  
  //  /*
  //   now lets create the body of the post
  //   */
      NSMutableData *body = [NSMutableData data];
      [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];    
      [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile%@.jpg\"\r\n",self.fileID] dataUsingEncoding:NSUTF8StringEncoding]];
      [body appendData:[[NSString stringWithString:@"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]];
  </code></pre>
  
  <p>I guess my PHP script respond corresponding to this and is working fine</p>
  
  <p>how can I replicate above in ASIFormDataRequest?</p>
  
  <p>tried to do this</p>
  
  <pre><code>ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL: 
                                 [NSURL URLWithString:photoUploadURLString]]; 
  
  
  NSString *boundary = [NSString stringWithString:@"---------------------------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=\"userfile\"; filename=\"ipodfile%@.jpg\"\r\n",self.fileID] dataUsingEncoding:NSUTF8StringEncoding]];
      [body appendData:[[NSString stringWithString:@"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 addData:body withFileName:filename andContentType:@"image/jpeg" forKey:@"snapshot[image]"]; 
  request.uploadProgressDelegate = self.progressView; 
  [request setDidFinishSelector:@selector(getFacebookPhotoFinished:)];
  </code></pre>
  
  <p>but didnt got sucess?</p>
  
  <p>here are the details of my PHP scripts</p>
  
  <pre><code>&lt;?php 
  
  $uploaddir = './uploads/';
  $file = basename($_FILES['userfile']['name']);
  $uploadfile = $uploaddir . $file;
  
  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
          echo "http://example.com/uploads/{$file}";
  }
  
  ?&gt;
  </code></pre>
  
  <p>I did as per Cyprian</p>
  
  <pre><code>NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,     NSUserDomainMask, YES);
  NSString *documentsDirectory = [paths objectAtIndex:0];
  
  NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"images/ipodfile%@.jpg", fileID]];
  NSData *imageData = UIImageJPEGRepresentation([itemImageView image], 0.05);
  if (imageData != nil) {
      [imageData writeToFile:savedImagePath atomically:YES];
  }
  if ([[NSFileManager defaultManager] createFileAtPath:savedImagePath contents:imageData attributes:nil])
  {
      NSLog(@"Image saved");
  } else {
      NSLog(@"Image not saved");
  }           
  
  
  [activityIndicator startAnimating];
  NSString *photoUploadURLString = @"http://example.com/imageuploader.php";
  
  NSString* filename = [NSString stringWithFormat:@"ipodfile%@.jpg", self.fileID];
  NSLog(@"url  is %@/%@",photoUploadURLString, filename);
  
  UIImage *newImage = [[UIImage alloc] init];
  newImage=[itemImageView image];
  NSURL *url=[NSURL URLWithString:photoUploadURLString];
  
  ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
  [request setPostValue:@"userfile" forKey:@"name"];
  [request setPostValue:filename forKey:@"filename"];
  
  [request setData:imageData withFileName:filename andContentType:@"image/jpeg" forKey:@"snapshot[image]"];
  </code></pre>