2009-06-30 70 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