Загрузка файла с метаданными - PullRequest
5 голосов
/ 29 апреля 2010

Не могли бы вы помочь мне, как добавить файл в библиотеку документов 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 столбца в моей библиотеке документов.

Ответы [ 2 ]

16 голосов
/ 29 апреля 2010

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()
8 голосов
/ 29 апреля 2010

Существует также перегрузка, когда вы можете отправить в хеш-таблицу с метаданными, которые вы хотите добавить. Например:

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);
...