0
我寫了使用CSOM寫入多個文件到SharePoint名錄的程序:等待整理上傳
foreach (file in myFiles) {
UploadFileToSharePoint(file.dataq, context, url+ file.name);
}
UploadFileToSharePoint(dummy, context, url+"finish.txt");
public static void UploadFileToSharePoint(Byte[] fileStream, ClientContext cCtx, String destUrl)
{
using (MemoryStream stream = new MemoryStream(fileStream))
{
Microsoft.SharePoint.Client.File.SaveBinaryDirect(cCtx, destUrl, stream, true);
}
}
正如你可以看到,完成上傳N個文件到目標文件夾時,被稱爲最後一個文件「finish.txt」被上傳。現在我有一個事件接收器該列表如果最後文件上傳檢查:
public override void ItemAdded(SPItemEventProperties properties)
{
try
{
if (properties.ListItem.FileSystemObjectType == SPFileSystemObjectType.File)
{
if (properties.ListItem.File != null && properties.ListItem.File.ParentFolder != null)
{
if (properties.ListItem.File.Name.Contains("finish.txt"))
{
// last file inside folder
AnalyzeFolder(properties.ListItem);
}
}
}
base.ItemAdded(properties);
}
偶爾我收到一個錯誤
錯誤移動文件:Microsoft.SharePoint.SPException:保存衝突。 您的更改與另一個用戶同時完成的更改發生衝突。如果 您希望應用更改,請在您的Web瀏覽器中單擊返回, 刷新頁面,然後重新提交更改。 ---> System.Runtime.InteropServices.COMException:保存衝突。您的 更改與另一個用戶同時發生衝突。
我猜測會發生這種情況,因爲最後一個文件是在上載完其他文件之前上傳的。
我如何確保在上傳最後一個文件之前完成所有上傳以防止出現此錯誤?