如何使用API​​将文件上传到VBA中的BOX

时间:2019-02-03 14:11:22

标签: excel vba api upload box

我正在尝试使用API​​将用户计算机中的文件上传到BOX。在GitHub上,我发现了这一点:https://github.com/Tackgnol/VBA-BOX-API/blob/master/mBox.bas

箱同步和箱体传动不是溶液(不能强迫用户安装)。

当我打印StatusText时,出现“方法不允许”。

65853643834是从URL获取的文件夹ID。 h5ntjo525se0tbhwswq8ozpoqsge ****来自Box Dev“客户ID”

enter image description here

Sub UploadFile()
    UploadBoxFile "h5ntjo525se0tbhwswq8ozpoqsge****"
End Sub

Sub UploadBoxFile(ByVal sToken As String)
    Dim curlInput As XMLHTTP60
    Dim sQuery As String
    Dim sXMLInput As String

    Set curlInput = CreateObject("MSXML2.XMLHTTP.6.0")

    sQuery = "https://upload.box.com/api/2.0/files/content"

    sXMLInput = "attributes={name: ""fileSample.txt"", ""parent"": {""id"":         ""65853643834""}}" & vbNewLine & "file=C:\Users\MichalPalko\Downloads\fileSample.txt"

    curlInput.Open "POST", sQuery, False

    curlInput.setRequestHeader "Authorization:", "Bearer " & sToken & 3243
    curlInput.send sXMLInput
    Debug.Print curlInput.StatusText
End Sub

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但对您的代码进行了一些调整,并收到“不支持的媒体类型”的StatusText响应。

我觉得我很近但是在黑暗中被刺伤。你有没有想过?

我的调整后代码如下:

Sub UploadBoxFile(sFilePath As String)
    Dim curlInput 'As XMLHTTP60
    Dim sQuery As String
    Dim sXMLInput As String

    Dim sToken As String
    Dim sFolderID As String
    Const sP As String = """"
    Const sAp As String = "'"

    sQuery = "https://upload.box.com/api/2.0/files/content"
    sToken = "XXXXXXXXXXXXXXXXXXXXXXXXX"     'My Obscured token
    sFolderID = "1234567890"                 'My Obscured FolderID
    sFileName = "TEST File 0001a.txt"

    sXMLInput = "attributes=" & sAp & "{" & sP & "name" & sP & ":" & sP & sFileName _
        & sP & ", " & sP & "parent" & sP & ":{" & sP & "id" & sP & ":" & sP & sFolderID & sP & "}}" & sAp _
        & vbNewLine & "file=" & sFilePath

Debug.Print sXMLInput

    Set curlInput = CreateObject("MSXML2.XMLHTTP.6.0")
    With curlInput
        .Open "POST", sQuery, False
        .setRequestHeader "Authorization:", "Bearer " & sToken
        .send sXMLInput
        Debug.Print .StatusText
    End With
End Sub