微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

上传到 Dropbox 但文件很小

如何解决上传到 Dropbox 但文件很小

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

def ff=session.get()
if(!ff)return
def flowFiles=session.get(2)
if(!flowFiles || flowFiles.size() < 2) return
def ff = flowFiles.find{ it.getAttribute("receive_date_filter") != null }
def original = new SimpleDateFormat("EEE,d MMM yyyy HH:mm:ss Z")
def target = new SimpleDateFormat("yyyy-MM-dd")
def received_date = ff."received_date"
def received_date_filter = ff."receive_date_filter"
def original_parsed = original.parse(received_date)
def received_date_filter_parsed = target.parse(received_date_filter)
def subject = ff."email.headers.subject"
def subject_regex = ff."subject"
def pattern = subject =~ subject_regex
ff_old = flowFiles.find{ it.getAttribute("receive_date_filter") == null }
if (received_date_filter.isEmpty() && subject.isEmpty()){
    REL_SUCCESS << ff_old
}
if (subject.isEmpty()){
    if (original_parsed.after(received_date_filter_parsed)){
        REL_SUCCESS << ff_old
    } else {
        REL_FAILURE << ff
    }
} else { 
    if (pattern && original_parsed.after(received_date_filter_parsed)){
        REL_SUCCESS << ff_old
    } else {
        REL_FAILURE << ff
    }
}
    

解决方法

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


    Dim arg As String
    Dim content As Byte,fPath as string
    
    fPath = "C:\Users\me\Desktop\Folder\document.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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。