【问题标题】:How to Overwrite SharePoint's Modified Date after Doing a SaveBinaryDirect?执行 SaveBinaryDirect 后如何覆盖 SharePoint 修改日期?
【发布时间】:2021-03-22 15:42:38
【问题描述】:

我可以将文件推送到 SharePoint,但修改日期始终等于我上传文件的确切时间。如何覆盖修改后的日期以等于文件的值?下面的代码是我多次搜索后的失败猜测。

使用“TimeLastModified”似乎错误为不存在,而“Modified”似乎没有错误,但随后的 ExecuteQuery 然后给出未知错误。

    using (var ctx = new ClientContext(DataSharepointSite))
    {
        ctx.AuthenticationMode = ClientAuthenticationMode.Default;
        ctx.Credentials = GetCreds();
        using (FileStream fs = new FileStream(localFile, FileMode.Open))
        {
            Microsoft.SharePoint.Client.File.SaveBinaryDirect(ctx, sharepointFile, fs, true);
        }

        //****************
        // Now somehow set Modified Date to local File's Modified Date
        //****************
        var file = ctx.Web.GetFileByServerRelativeUrl(sharepointFile);
        ListItem lstItem = file.ListItemAllFields;
        ctx.Load(lstItem);
        ctx.ExecuteQuery();
        lstItem["TimeLastModified"] = System.IO.File.GetLastWriteTime(localFile).ToUniversalTime();
        lstItem.Update();
        ctx.ExecuteQuery();
    }

【问题讨论】:

    标签: c# sharepoint-online last-modified clientcontext


    【解决方案1】:

    尝试使用代码 sn-p 更新 Modified 字段:

            var file = ctx.Web.GetFileByServerRelativeUrl(sharepointFile);
            ListItem lstItem = file.ListItemAllFields;
            ctx.Load(lstItem);
            ctx.ExecuteQuery();
            lstItem["Modified"] = System.IO.File.GetLastWriteTime(localFile).ToShortDateString();
            lstItem.Update();
            ctx.ExecuteQuery();
    

    【讨论】:

    • 似乎不需要第一次加载和执行。你能解释一下吗?
    • ctx.Load(lstItem); ctx.ExecuteQuery();加载文件对象的字段值,然后 lstItem["Modified"] 可以访问和更新。无论如何,代码 sn-p 应该可以更新 Modified 字段。
    • 我猜只有在我想查看字段时才需要加载和首次执行。我可以设置一个而无需先填充它然后更新它。我确实想知道这是否会覆盖任何重要的东西。我没有看到任何内容被覆盖,但填充然后更改和更新可能是一个很好的预防措施。
    • 是的,最好在更新字段之前加载和执行:)
    【解决方案2】:

    我是如此接近!看起来也不需要 Load 和 first ExecuteQuery。现在我只是不知道它是读取为本地还是 UTC...

    lstItem["Modified"] = System.IO.File.GetLastWriteTime(localFile).ToUniversalTime().ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2019-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多