You just use an HTTP PUT to place a file in a library. It's not so much REST as good old HTTP ...
From that link:
WebResponse response = null;
// Create a PUT Web request to upload the file.
WebRequest request = WebRequest.Create(SharePointPath);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "PUT";
// Allocate a 1 KB buffer to transfer the file contents.
// You can adjust the buffer size as needed, depending on
// the number and size of files being uploaded.
byte buffer = new byte;
// Write the contents of the local file to the
// request stream.
using (Stream stream = request.GetRequestStream())
using (FileStream fsWorkbook = File.Open(UploadedFilePath,
int i = fsWorkbook.Read(buffer, 0, buffer.Length);
while (i > 0)
stream.Write(buffer, 0, i);
i = fsWorkbook.Read(buffer, 0, buffer.Length);
// Make the PUT request.
response = request.GetResponse();
catch (Exception ex)
To update them, then make REST calls subsequently. I've not found a way of doing this that isn't two stage.