使用元数据上传文件

时间:2010-04-29 09:55:10

标签: c# asp.net sharepoint file-upload metadata

您能帮我解决如何将文件添加到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 个答案:

答案 0 :(得分:16)

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 :(得分: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);