将文件从本地复制到SharePoint服务器位置

时间:2013-02-09 15:32:58

标签: delphi file sharepoint copy

现在,在我的电脑上,我可以使用资源管理器在我们的SP服务器上打开一个位置(例如http://sp.myhost.com/site/Documents/)。从那里我可以复制/粘贴例如我的C:\驱动器中的文件。

我需要以编程方式复制复制过程。 FileCopy()没有这样做 - 似乎是导致问题的http://位!

2 个答案:

答案 0 :(得分:1)

服务器是否允许 WebDAV 访问?如果是,可以使用Delphi的WebDAV客户端,包括Indy 10

答案 1 :(得分:0)

如果您不使用BLOB存储,则所有SharePoint文件都作为BLOB对象存储在数据库中。

当您使用资源管理器访问文件时,您正在使用从SharePoiont读取文件并将其呈现给您的Windows服务。通过这种方式,您可以在手动将它们从手动下载到SharePoint时进行复制和粘贴。

为了能够自动执行此操作,您应该使用下一个SP API代码:

        using (SPSite site = new SPSite("http://testsite.dev"))
        {
            using (SPWeb web = site.OpenWeb())
            {
                using (FileStream fs = File.OpenRead(@"C:\Debug.txt"))
                {
                    byte[] buffer = new byte[fs.Length];
                    fs.Read(buffer, 0, (int) fs.Length);

                    SPList list = web.GetList("Lists/Test AAD");
                    SPFile f = list.RootFolder.Files.Add("/Shared Documents/"+Path.GetFileName(fs.Name), buffer);
                }
            }
        }

这会将新的“Debug.txt”文件添加到从磁盘C读取的“共享文档”库中。为每个文件执行此操作只需遍历文件夹中的每个文件。您只能打开一次Web,并在每次添加文件时执行循环...

希望它有所帮助,

安德鲁