正在上传到Dropbox,但文件很小 [英] Uploading to Dropbox but tiny file size

查看:23
本文介绍了正在上传到Dropbox,但文件很小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Excel中有一个VBA函数,该函数创建一个Docent.docx,然后将其上载到Dropbox。它正在成功地在Dropbox中创建文件,但无法打开,因为它只有2个字节大小。为什么此文件中没有内容?我真的不知道文件实际上是如何工作的,这与将内容转换为字节的脚本有关吗?

Public Sub dropboxUpload()
Dim req As MSXML2.ServerXMLHTTP60
Dim strFile As String
Dim Pos1 As Integer
Dim Pos2 As Integer
Set req = New MSXML2.ServerXMLHTTP60
Dim arg As String

Dim content As Byte
content = ReadByteArrFromFile("C:UsersmeDesktopFolderdocument.docx")
FileName = "document.docx"
arg = "{""path"":""/Work/" & FileName & """,""mode"":{"".tag"":""add""},""autorename"":true,""mute"":false}"
req.Open "POST", "https://content.dropboxapi.com/2/files/upload", False
req.setRequestHeader "Authorization", "Bearer xxxxx"

req.setRequestHeader "Content-Type", "application/octet-stream"
req.setRequestHeader "Content-length", Len(Result)
req.setRequestHeader "Dropbox-API-Arg", arg
req.setRequestHeader "User-Agent", "api-explorer-client"
req.Send content

If req.Status = 200 Then '200 = OK
    'MsgBox req.Status & ": " & req.StatusText
    Debug.Print req.responseText
Else
    MsgBox req.Status & ": " & req.StatusText
    Debug.Print req.responseText
End If
End Sub

Function ReadByteArrFromFile(filePath) As Byte()
    Dim buff() As Byte
    Dim fileNumb As Integer
    fileNumb = FreeFile
    Open filePath For Binary Access Read As fileNumb
    ReDim buff(0 To LOF(fileNumb) - 1)
    Get fileNumb, , buff
    Close fileNumb
    ReadByteArrFromFile = buff
End Function

推荐答案

尝试设置正确的Content-length值:


    Dim arg As String
    Dim content As Byte, fPath as string
    
    fPath = "C:UsersmeDesktopFolderdocument.docx"
    
    FileName = "document.docx"
    
    arg = "{""path"":""/Work/" & FileName & """,""mode"":{"".tag"":""add""},""autorename"":true,""mute"":false}"
    
    req.Open "POST", "https://content.dropboxapi.com/2/files/upload", False
    req.setRequestHeader "Authorization", "Bearer xxxxx"
    
    req.setRequestHeader "Content-Type", "application/octet-stream"
    req.setRequestHeader "Content-length", FileLen(fPath) '<<< set the correct size
    req.setRequestHeader "Dropbox-API-Arg", arg
    req.setRequestHeader "User-Agent", "api-explorer-client"
    req.Send ReadByteArrFromFile(fPath)
    
    If req.Status = 200 Then '200 = OK
        'MsgBox req.Status & ": " & req.StatusText
        Debug.Print req.responseText
    Else
        MsgBox req.Status & ": " & req.StatusText
        Debug.Print req.responseText
    End If

End Sub

这篇关于正在上传到Dropbox,但文件很小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆