I'm trying to upload files to a SharePoint 2007 environment using PUT requests. Using the object model isn't an option since my application is not running on one of the SharePoint servers and unfortunately 2007 doesn't have a client model.
I'm using the rather default upload code which is found on many blogs:
WebRequest request = WebRequest.Create(destinationUrl);
request.Credentials = credential;
request.Method = "PUT";
byte[] buffer = new byte[1024];
// Write the contents of the local file to the
// request stream.
using (Stream stream = request.GetRequestStream())
using (FileStream fsWorkbook = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
int i = fsWorkbook.Read(buffer, 0, buffer.Length);
while (i > 0)
{
stream.Write(buffer, 0, i);
i = fsWorkbook.Read(buffer, 0, buffer.Length);
}
}
This works fine, untill I run into a situation where I need to recursively upload folders with their contents and there are folders with special characters like '+'. Whenever I try to upload a file there, I get a 404 error.
I have tried escaping the + with %2b, I've tried replacing it with a space or an empty character, nothing seems to work.
So I can properly upload to List/folder/, or List/folder/subfolder/, but not to list/folder + name/. Any ideas on a good reliable workaround?