2010-04-29 77 views
4

你能幫助我如何將文件添加到Sharepoint文檔庫嗎?我在.NET中發現了一些文章,但我沒有得到完成這個任務的完整概念。上傳帶有元數據的文件

我沒有上傳元數據的文件通過使用此代碼:

if (fuDocument.PostedFile != null) 
       { 
        if (fuDocument.PostedFile.ContentLength > 0) 
        { 
         Stream fileStream = fuDocument.PostedFile.InputStream; 
         byte[] byt = new byte[Convert.ToInt32(fuDocument.PostedFile.ContentLength)]; 
         fileStream.Read(byt, 0, Convert.ToInt32(fuDocument.PostedFile.ContentLength)); 
         fileStream.Close(); 


         using (SPSite site = new SPSite(SPContext.Current.Site.Url)) 
         { 
          using (SPWeb webcollection = site.OpenWeb()) 
          { 
           SPFolder myfolder = webcollection.Folders["My Library"]; 
           webcollection.AllowUnsafeUpdates = true; 
           myfolder.Files.Add(System.IO.Path.GetFileName(fuDocument.PostedFile.FileName), byt); 

          } 
         } 
        } 
       } 

此代碼工作正常原樣,但我需要上傳與元數據的文件。如果可能,請編輯此代碼以幫助我。我在文檔庫中創建了3列。

回答

15

SPFolder.Files.Add返回SPFile對象

SPFile.Item返回SPListItem對象

然後可以使用SPlistItem [ 「字段名」]來訪問每個字段(見SPListItem鏈路的底部)

所以添加此到你的代碼中(這沒有經過測試,但你應該明白)

SPFile file = myfolder.Files.Add(System.IO.Path.GetFileName(document.PostedFile.FileName); 
SPListItem item = file.Item; 
item["My Field"] = "Some value for your field"; 
item.Update() 
+1

>>非常感謝我! – kevin 2012-03-27 02:13:55

8

還有一個重載,您可以在其中發送包含要添加的元數據的哈希表。例如:

Hashtable metaData = new Hashtable(); 
metaData.Add("ContentTypeId", "some CT ID"); 
metaData.Add("Your Custom Field", "Your custom value"); 

SPFile file = library.RootFolder.Files.Add(
        "filename.fileextension", 
        bytearray, 
        metaData, 
        false); 
+0

不錯 - 我不知道你可以做到這一點,我假設它只是內置的元數據字段(_vti *) – Ryan 2010-04-29 13:21:55

相關問題