如何更新 Sharepoint CSOM 中的文件元数据?
How to update File metadata in Sharepoint CSOM?
我知道过去有人问过这个问题,但我似乎找不到有效的解决方案。
我想更新我使用 CSOM 上传的文件的 CreatedDateTime、ModifiedBy 和 CreatedBy 元数据。我有这个代码。它不会崩溃,但也不会更新属性。
FileCreationInformation newFile = new FileCreationInformation();
byte[] FileContent = null;
using (var webClient = new WebClient())
{
webClient.Headers.Add("Authorization", authorization);
FileContent = webClient.DownloadData(file.DowlnloadUrl);
}
newFile.ContentStream = new System.IO.MemoryStream(FileContent);
newFile.Url = System.IO.Path.GetFileName(file.Name);
Microsoft.SharePoint.Client.File sharepointFile = _spFolder.Files.Add(newFile);
_context.ExecuteQuery();
sharepointFile.ListItemAllFields["Modified"] = DateTime.Today.AddDays(-3);
sharepointFile.ListItemAllFields["Created"] = DateTime.Today.AddDays(-3);
sharepointFile.ListItemAllFields.Update();
_context.ExecuteQuery();
该文件仍然显示为 created/modified 几秒钟前。
如有任何帮助,我们将不胜感激。 PS:如果这可以做到一次(一个单独的 ExecuteQuery),那就太好了。
我最终找到了一个有效的代码片段。
请注意,这仅在您用于生成上下文的帐户是 Sharepoint Admin(具有 SP 管理员角色,而不仅仅是全局管理员角色)时有效。
作为网站的所有者也不够。
我知道过去有人问过这个问题,但我似乎找不到有效的解决方案。 我想更新我使用 CSOM 上传的文件的 CreatedDateTime、ModifiedBy 和 CreatedBy 元数据。我有这个代码。它不会崩溃,但也不会更新属性。
FileCreationInformation newFile = new FileCreationInformation();
byte[] FileContent = null;
using (var webClient = new WebClient())
{
webClient.Headers.Add("Authorization", authorization);
FileContent = webClient.DownloadData(file.DowlnloadUrl);
}
newFile.ContentStream = new System.IO.MemoryStream(FileContent);
newFile.Url = System.IO.Path.GetFileName(file.Name);
Microsoft.SharePoint.Client.File sharepointFile = _spFolder.Files.Add(newFile);
_context.ExecuteQuery();
sharepointFile.ListItemAllFields["Modified"] = DateTime.Today.AddDays(-3);
sharepointFile.ListItemAllFields["Created"] = DateTime.Today.AddDays(-3);
sharepointFile.ListItemAllFields.Update();
_context.ExecuteQuery();
该文件仍然显示为 created/modified 几秒钟前。
如有任何帮助,我们将不胜感激。 PS:如果这可以做到一次(一个单独的 ExecuteQuery),那就太好了。
我最终找到了一个有效的代码片段。 请注意,这仅在您用于生成上下文的帐户是 Sharepoint Admin(具有 SP 管理员角色,而不仅仅是全局管理员角色)时有效。 作为网站的所有者也不够。