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