代码之家  ›  专栏  ›  技术社区  ›  Hinek

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

  •  2
  • Hinek  · 技术社区  · 14 年前

    我必须上传一些XML文件到SharePoint库。我必须从一台不是SharePoint服务器的计算机上完成(这样对象模型就不起作用了)。库还有一个自定义(整数)列,我必须为上传的文件设置它的值。

    3 回复  |  直到 14 年前
        1
  •  6
  •   Hinek    14 年前

    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 = "<View/>" });
        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();
        }
    }
    
        2
  •  2
  •   Doug Stalter    14 年前

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

        3
  •  0
  •   Kolten    14 年前