现在在我的 PC 上,我可以使用资源管理器在我们的 SP 服务器上打开一个位置(例如http://sp.myhost.com/site/Documents/位置)。从那里我可以从我的 C:\ 驱动器复制/粘贴一个文件。
我需要以编程方式复制复制过程。FileCopy() 不这样做 - 似乎是导致问题的 http:// 位!
现在在我的 PC 上,我可以使用资源管理器在我们的 SP 服务器上打开一个位置(例如http://sp.myhost.com/site/Documents/位置)。从那里我可以从我的 C:\ 驱动器复制/粘贴一个文件。
我需要以编程方式复制复制过程。FileCopy() 不这样做 - 似乎是导致问题的 http:// 位!
服务器是否允许WebDAV访问?如果是,则有适用于 Delphi 的 WebDAV 客户端,包括Indy 10。
如果您不使用 BLOB 存储,所有 SharePoint 文件都作为 BLOB 对象存储在数据库中。
当您使用资源管理器访问文件时,您正在使用 Windows 服务,该服务正在从 SharePoiont 读取文件并将其呈现给您。这样,您可以在手动将它们从 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 读取的“共享文档”库中。要对每个文件执行此操作,只需遍历文件夹中的每个文件。每次添加文件时,您只能打开一次网页并循环...
希望能帮助到你,
安德鲁