0

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:

public void UploadDocument(SharePointFolder folder, String filename, Boolean overwrite) {

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();

}

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.

My SharePointFolder class has the serverRelativeUrl of the folder path to upload to. Any help greatly appreciated.

vince anon
  • 73
  • 1
  • 8

1 Answers1

0

You need a credential before the executeQuery(); and SaveBinaryDirect();

For example:

mClientContext.Credentials = new NetworkCredential("LoginID","LoginPW", "LoginDomain");

SPFile newFile = mRootWeb.GetFileByServerRelativeUrl(targetLocation);
mClientContext.Load(newFile);
mClientContext.ExecuteQuery();
Tony Wu
  • 1,040
  • 18
  • 28