我有一个将文件存储到Sharepoint的功能,我想知道测试它的任何方法,而不是真正尝试在sharepoint上放任何东西。此外,如果有人有更好的功能将文件存储到sharepoint,那么如果你能分享它我会很感激。 这是我的功能:
public static void UploadFile(ClientContext context, string listTitle, string fileName)
{
using (var fs = new FileStream(fileName, FileMode.Open))
{
var fi = new FileInfo(fileName);
var list = context.Web.Lists.GetByTitle(listTitle);
context.Load(list.RootFolder);
context.ExecuteQuery();
var fileUrl = String.Format("{0}/{1}", list.RootFolder.ServerRelativeUrl, fi.Name);
Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, fileUrl, fs, true);
}
}
答案 0 :(得分:1)
开箱即用是不可能的。要知道文件是否已成功导入,必须成功导入该文件。
我认为解决这个问题的唯一方法是事先逐一检查每个细节:
谈论列,你似乎没有,所以SaveBinaryDirect有效。如果您想设置列值,则必须分两步执行,如下所示:
// Upload
FileCreationInformation fileInfo = new FileCreationInformation();
fileInfo.Content = IOFile.ReadAllBytes(filePath);
fileInfo.Url = Path.GetFileName(filePath);
Microsoft.SharePoint.Client.File uploadFile = rootFolder.Files.Add(fileInfo);
// Columns setting
ListItem listItem = uploadFile.ListItemAllFields;
listItem["Field1"] = "foo";
listItem["Field2"] = "bar";
listItem.Update();
// Execution
context.ExecuteQuery();
编辑:@RandomStranger指出了TransactionScope。它似乎不适用于开箱即用的SharePoint,但this link提供了如何解决它的洞察力(创建自己的事务管理器,甚至使用列表版本控制)。