2009-06-30 68 views
3

嘿,我已经得到了这个很好的一小段代码,非常像使用WSS WebServices上传这种上传方法的所有其他版本。但是,我有一个主要问题 - 一旦我将文件上载到我的文档列表中,并且更新了列表项目以撰写评论/说明,则文件将停留在那里。我的意思是说,一旦我上传了这个文件,这个方法就不会覆盖这个文件。没有其他人似乎已经发布了这个问题,所以..任何人?使用WebRequest将文件上传到SharePoint WSS 3.0 PUT

我有另一个版本的方法使用一个字节[]而不是一个流..虽然同样的问题。

注意:我已经关闭了图书馆的'需要编辑之前需要检出的文件'选项。没有运气tho ..虽然文档库确实有版本控制,但每个更新都会创建一个主要版本。

private void UploadStream(string fullPath, Stream uploadStream) 
    { 
     WebRequest request = WebRequest.Create(fullPath); 
     request.Credentials = CredentialCache.DefaultCredentials; // User must have 'Contributor' access to the document library 
     request.Method = "PUT"; 
     request.Headers.Add("Overwrite", "t"); 

     byte[] buffer = new byte[4096]; 
     using (Stream stream = request.GetRequestStream()) 
     { 
      for (int i = uploadStream.Read(buffer, 0, buffer.Length); i > 0; i = uploadStream.Read(buffer, 0, buffer.Length)) 
      { 
       stream.Write(buffer, 0, i); 
      } 
     } 
     WebResponse response = request.GetResponse(); // Upload the file 
     response.Close(); 
    } 

原始学分:http://geek.hubkey.com/2007/10/upload-file-to-sharepoint-document.html

编辑 - 重大发现..当我把它从我的NUnit的测试项目,它工作正常。当我从我的WCF应用程序调用它(nUnit以已登录的用户帐户运行,WCF应用程序具有在同一用户下运行的应用程序池 - 我的帐户,同时在SharePoint中具有有效权限)时,它似乎只失败。

坚果。 “现在从哪里开始?!”,我沉迷于自己。

回答

2

已解决 - 我发现了一个小错误 - 该文件是在正确的地方创建的,但更新路径错误..我最终发现一个文件夹充满了许多许多新版本的文件..卫生署!

0

为什么不使用即开即用的SharePoint webservice Lists.asmx?你会在

http://SITEURL/___vti_bin/Lists.asmx

编辑找到它,我检查了链接,看来你所呼叫的开箱即用的Web服务。这已经成为与之相关的版本控制。你可以看看存在于特定文件的文档库中的不同版本吗?看看它是否可能通过服务被添加为次要版本?

+0

可能会,但不知道要改变什么。我试图关闭此文档库的版本,但没有任何效果。另外,我关闭了更新其他项目字段的第二部分。现在SharePoint中根本没有任何反应。这就像代码从未执行 - 即使我亲眼看到它。 – misteraidan 2009-06-30 07:47:25

0

你试过用大写字母T吗? SharePoint的webdav头处理不太可能区分大小写,但协议确实指定大写字母T.噢,响应是什么? 412错误代码或完全不同的东西?

+0

我最初有一个大写字母T,并将其降低,这说明了我在这里粘贴的代码。没有错误代码 - 代码完全执行,但现有文件仍然存在。版本历史也没有改变。这就像什么都没有发生过。 – misteraidan 2009-06-30 23:14:55