现在,在我的电脑上,我可以使用资源管理器在我们的SP服务器上打开一个位置(例如http://sp.myhost.com/site/Documents/)。从那里我可以复制/粘贴例如我的C:\驱动器中的文件。
我需要以编程方式复制复制过程。 FileCopy()没有这样做 - 似乎是导致问题的http://位!
答案 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,并在每次添加文件时执行循环...
希望它有所帮助,
安德鲁