如何通过标准Web服务之一将文件上载到SharePoint库

我必须将一些XML文件上传到SharePoint库。 我必须从不是SharePoint服务器之一的计算机上执行此操作(因此对象模型将无法工作)。 该库还有一个自定义(整数)列,我必须为上传的文件设置它的值。

如何使用SharePoint 2010的标准WebServices上载文件和值?

我现在通过使用客户端对象模型解决了它(如Doug建议的那样)。 使用COM上传文件非常简单:

public void UploadXmlFile(string xmlContent, int orderNumber) { string filename = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss") + "_" + orderNumber + ".xml"; ClientContext context = new ClientContext(absoluteHostUrl + relativeWebUrl); using (MemoryStream stream = new MemoryStream()) { // use a MemoryStream for the file contents StreamWriter writer = new StreamWriter(stream); writer.Write(xmlContent); writer.Flush(); stream.Position = 0; // ... and upload it. Microsoft.SharePoint.Client.File.SaveBinaryDirect( context, "/" + relativeWebUrl + "Lists/" + libraryName + "/" + filename, stream, false); } // ... 

…但在上传文件后签出,我仍然需要设置我的整数列:

  // ... // get the created entry Web web = context.Web; List list = web.Lists.GetByTitle(libraryName); ListItemCollection itemCol = list.GetItems(new CamlQuery() { ViewXml = "" }); context.Load(itemCol, items => items .Include(i => i[COLUMN_IMPORTORDERNUMBER]) .Where(i => (string)i[COLUMN_FILELEAFREF] == filename) .Take(1) ); context.ExecuteQuery(); // ... found it? ... if (itemCol != null && itemCol.Count > 0) { ListItem item = itemCol[0]; // ... set the ImportOrderNumber item[COLUMN_IMPORTORDERNUMBER] = orderNumber; item.Update(); // ... and check in item.File.CheckIn("Checked in by WebService", CheckinType.MajorCheckIn); context.ExecuteQuery(); } } 

我还没有使用它,但客户端对象模型可能是一个很好的选择。

你可以使用电子邮件到列表这么简单的东西,并从中创建项目吗?