测试在Sharepoint中存储文件的函数



我有一个函数可以将文件存储到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);
}
}

这是不可能的。要知道文件是否已成功导入,必须成功导入该文件。

我认为解决这个问题的唯一方法是事先逐一检查每个细节:

  • 权限是否正常
  • 新项目的列值是否符合验证规则
  • 每一列的值都是正确的数据类型吗

等等。。。如果你问我的话,这很烦人。最简单的方法仍然是使用网站的测试版本(请参阅如何复制网站结构)。

谈到列,您似乎没有,所以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配合使用,但此链接提供了如何解决它的见解(创建自己的事务管理器,甚至使用列表版本控制)。

相关内容

最新更新