设置" client_updated_time"将文件上传到OneDrive时

时间:2014-07-22 23:20:21

标签: onedrive

我几乎已经完成了一个基本的OneDrive界面,并且能够处理创建和编写文件夹,文件等等。最后一个工作的元素是更新文件的日期/时间戳以匹配本地(原始)文件的日期/时间戳。

当我通过浏览器界面删除文件时,文件的日期/时间戳在视图中正确显示。当我稍后在应用程序中读取文件的属性时,这反映在“client_updated_time”中。足够清楚。

但是,我无法找到以任何方式从我的应用程序中以编程方式更新此字段。我使用以下代码,无济于事。我有一个有效的_accessToken值,一个新文件的有效fileId,并且调用结果总是表示成功。

“name”和“updated_time”元素就在那里,看是否有任何事情发生,如果我稍微破坏了fileName变量,文件确实会重命名。我没想到“updated_time”会更新,但在我看来“client_updated_time”元素应该可以正常工作。

使用fiddler,似乎基于浏览器的界面(java?)打开会话,发送文件,然后在close-session调用中使用标记为“X-Last-Modified-ISO8601”的标题条目设置文件的日期时间戳。但是,使用REST接口,我找不到任何这样的例子。设置文件属性的文档仅提到重命名(在此代码中有效)。

有关如何使用REST调用完成“client_updated_time”设置的任何反馈都将非常感谢!

以下是相关代码:

Private _liveURL As String = "https://apis.live.net/v5.0/"

Private Sub AddAuthorizationHeader(hc As HttpClient, authorization As String)
    If Len(authorization) > 0 Then
        hc.DefaultRequestHeaders.Authorization = New Headers.AuthenticationHeaderValue("Bearer", authorization)
    End If
End Sub

Public Function WebPUT(uri As String, contentType As String, authorization As String, data As String) As String
    Dim response As String = String.Empty

    Try
        Dim hc As New HttpClient()
        Dim content As New Http.StringContent(data, System.Text.Encoding.UTF8, contentType)

        AddAuthorizationHeader(hc, authorization)

        Using r = hc.PutAsync(uri, content).Result
            response = r.Content.ReadAsStringAsync.Result
        End Using
    Catch ex As Exception
        ' fake it
        response = "{""error"": {""code"": ""invalid_request"", ""message"": """ + ex.Message + """}}"
    End Try

    Return response
End Function

Private Function UpdateFileDateTime(fileId As String, fileName As String, fileDt As String) As Boolean
    Dim response As Boolean = False

    Dim wr As String = WebHelper.WebPUT(_liveURL + fileId, "application/json", _accessToken, "{ ""name"": """ + fileName + """, ""updated_time"": """ + fileDt + """, ""client_updated_time"": """ + fileDt + """ }")

    '... parse wr for response

    Return response
End Function

1 个答案:

答案 0 :(得分:1)

根据文件对象引用,该字段通过REST API为只读:http://msdn.microsoft.com/en-us/library/dn631834.aspx