Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I am executing code in a program I have been working on that uploads files to sharepoint. I am uploading the file with HTTP PUT, then using the path to update the attributes. For a day or two I've been focusing on user defined content types. Today I went to upload a file to the Document content type and I got an error that said The file or folder name contains characters that are not permitted.

My xml that is sent to UpdateListItems looks like this:

<Batch OnError="Continue">
  <Method ID="1" Cmd="Update">
    <Field Name="ID" />
    <Field Name="FileRef">http://sharepoint:32667/personal/user/Shared%20Documents/EmailMessage.msg</Field>
    <Field Name="ContentType">Document</Field>
    <Field Name="Title">Test</Field>
  </Method>
</Batch>

So far I have been successfull updating items. The only difference I can think of in this case is that the File path has the port number in it. I've been uploading to another server that I haven't had to specify the port number on.

The response I get back is:

<Results xmlns="http://schemas.microsoft.com/sharepoint/soap/">
  <Result ID="1,Update">
    <ErrorCode>0x81020073</ErrorCode>
    <ErrorText>The file or folder name contains characters that are not permitted.  Please use a different name.</ErrorText>
  </Result>
</Results>

Any ideas?

This is part of generalized code that will allow a user to pick a content type from a list. So that is why the content type gets set to Document. I'm guessing either that or the semicolon in the url may be the problem.

share|improve this question
add comment

1 Answer 1

up vote 3 down vote accepted

The problem is that you are using a filepath that is URL encoded (the %20 should be a space):

<Batch OnError="Continue">
  <Method ID="1" Cmd="Update">
    <Field Name="ID" />
    <Field Name="FileRef">http://sharepoint:32667/personal/user/Shared Documents/EmailMessage.msg</Field>
    <Field Name="ContentType">Document</Field>
    <Field Name="Title">Test</Field>
  </Method>
</Batch>

You can use System.Web.HttpUtility.UrlDecode(filename) to help decode URLs.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.