使用SharePoint Web Services使用元数据上载文件

时间:2011-06-16 21:58:38

标签: sharepoint sharepoint-2010

我尝试使用SharePoint Web服务上传包含元数据的文件。我采用的第一种方法是使用WebRequest / WebResponse对象,然后使用Lists.asmx - UpdateListItems方法更新元数据。这工作得很好,但它创建了两个版本的文件。我采用的第二种方法是使用Copy.asmx Web服务并使用CopyIntoItems方法,该方法将文件数据与元数据一起复制。这工作正常并创建v 1.0但是当我尝试上传相同的文件时,元数据中有一些更改(使用Copy.asmx)它不会更新任何内容。是否有人遇到同样的问题或者有其他想法来实现所需的功能。

谢谢, 基兰

1 个答案:

答案 0 :(得分:1)

这可能是一个主题(对不起),但我想建议您在远程使用SharePoint时节省时间的快捷方式,http://www.bendsoft.com/net-sharepoint-connector/

它使您可以使用SQL和存储过程处理SharePoint列表和文档库。

将文件上传为字节数组

...
string sql = "CALL UPLOAD('Shared Documents', 'Images/Logos/mylogo.png', @doc)";

byte[] data = System.IO.File.ReadAllBytes("C:\\mylogo.png");
SharePointCommand cmd = new SharePointCommand(sql, myOpenConnection);
cmd.Parameters.Add("@doc", data);

cmd.ExecuteNonQuery();
...

上传流输入

using (fs == System.IO.File.OpenRead("c:\\150Mb.bin")) {
    string sql = "CALL UPLOAD('Shared Documents', '150Mb.bin', @doc)";
    SharePointCommand cmd = new SharePointCommand(sql, myOpenConnection);
    cmd.Parameters.Add("@doc", fs);
    cmd.ExecuteNonQuery();
}

有很多方法可以简化远程文档管理

UPLOAD(lisname, filename, data)
DOWNLOAD(listname, filename)
MOVE(listname1, filename1, listname2, filename2)
COPY(listname1, filename1, listname2, filename2)
RENAME(listname, filename1, filename2)
DELETE(listname, filename)
CREATEFOLDER(listname, foldername)
CHECKOUT(list, file, offline, lastmodified)
CHECKIN(list, file, comment, type)
UNDOCHECKOUT(list, file)

干杯