How to: Upload a file/document using the SharePoint Object Model

Author: Tobias Zimmergren


I’ve been getting a couple of requests to provide details on how you can upload a file or document using the SharePoint Object Model, instead of using the UI.

With this simple article, I’m walking you through the process of uploading any file to your Document Library.

Note; Since this is done through the local API, you need to have this code running on the server. That means that it’s ideal to use in for example a FeatureReceiver or EventReceiver. You cannot run this code on the client in e.g. a Windows Form, then you’ll need to utilize the SharePoint WebServices instead.

Code to upload a file/document to a SharePoint Document Library

Use the following code to get you started in uploading a file using the object model. It really isn’t that hard :-)

// Getting a reference to the document library
var sp = new SPSite("http://localhost");
var site = sp.OpenWeb();
var folder = site.GetFolder("Documents");
var files = folder.Files;

// Opening a filestream
var fStream = File.OpenRead("C:MyDocument.docx");
var contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);

// Adding any metadata needed
var documentMetadata = new Hashtable {{"Comments", "Hello World"}};

// Adding the file to the SPFileCollection
var currentFile =
    files.Add("Documents/MyDocument.docx", contents, documentMetadata, true);


As you can see in the image below, the metadata "Comments" has been filled in as per the metadata I specified in the code above.

File uploaded using the Object Model

Simple as that. Over and out!

Follow me

Tobias Zimmergren

Founder / Consultant / Advisor at TOZIT AB
Tobias Zimmergren delivers high-quality articles about business and technology around the Microsoft scene.

Tobias focuses on advisory and consultancy for the Office 365 and SharePoint offerings from Microsoft.
Follow me
  • MrB

    Perfect example – just what I was looking for.

    • Tobias Zimmergren


    • Reeves

      Yes, but let you know that it works only with : “datetime”, “string”, “int”, or “bool” field-value types.
      Other (complex) field-value types such as “lookup”, “taxonomy”, etc. are not seemingly supported by the method Add() you used.

  • Melih

    Hi, it is working on only local PC

  • johndurbinn

    Great stuff, thanks Tobias!

    • Tobias Zimmergren

      Thanks for the comment, I appreciate it.

  • Ajit

    Hey Tobias ,
    Thanks for the article , just wanted to know how to create and folder first and then insert the file set document into my doc library using C#

  • Karthik

    Will this work for SharePoint Online also. I mean in Office365. I am getting error