title: Upload file with meta data and checkin to sharpoint folder using Client Object Model
body: <p>Hi I'm trying to upload a file to sharepoint 2010 using the client api with meta data and also checkin the file after I'm done. Below is my code:</p>
  
  <blockquote>
    <p>public void UploadDocument(SharePointFolder folder, String filename, Boolean overwrite)
    {</p>
  </blockquote>
  
  <pre><code>var fileInfo = new FileInfo(filename);
  var targetLocation = String.Format("{0}{1}{2}", folder.ServerRelativeUrl,
      Path.AltDirectorySeparatorChar, fileInfo.Name);
  
  using (var fs = new FileStream(filename, FileMode.Open))
  {
      SPFile.SaveBinaryDirect(mClientContext, targetLocation, fs, overwrite);
  }
  
  // doesn't work
  SPFile newFile = mRootWeb.GetFileByServerRelativeUrl(targetLocation);
  mClientContext.Load(newFile);
  mClientContext.ExecuteQuery();
  
  //check out to make sure not to create multiple versions
  newFile.CheckOut();
  
  // use OverwriteCheckIn type to make sure not to create multiple versions 
  newFile.CheckIn("test", CheckinType.OverwriteCheckIn);
  mClientContext.Load(newFile);
  mClientContext.ExecuteQuery();
  
  //SPFile uploadFile = mRootWeb.GetFileByServerRelativeUrl(targetLocation);
  
  //uploadFile.CheckOut();
  //uploadFile.CheckIn("SOME VERSION COMMENT I'D LIKE TO ADD", CheckinType.OverwriteCheckIn);
  
  //mClientContext.ExecuteQuery();
  </code></pre>
  
  <p>}</p>
  
  <p>I'm able to upload the file but I can't add any meta data and file is checked out. I want to add some meta data and checkin the file after I'm done. </p>
  
  <p>My SharePointFolder class has the serverRelativeUrl of the folder path to upload to. Any help greatly appreciated.</p>