2010-04-29 74 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

相关问题