2010-04-29 5 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 [ "FIELDNAME"], чтобы получить доступ к каждому полю (см нижней 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

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

Смежные вопросы