首页 > 解决方案 > 上传的文件在 Dropbox 中被覆盖

问题描述

我正在尝试将用户文件上传到 Django 中的 DropBox。当我使用内置的 'open()' 函数时,它会引发以下异常:

expected str, bytes or os.PathLike object, not TemporaryUploadedFile

当我不这样做时,文件会成功上传但为空白(写入模式)。

上传处理程序:

def upload_handler(DOC, PATH):
    dbx = dropbox.Dropbox(settings.DROPBOX_APP_ACCESS_TOKEN)

    with open(DOC, 'rb') as f:
        dbx.files_upload(f.read(), PATH)
        dbx.sharing_create_shared_link_with_settings(PATH)

如何在mode不被覆盖的情况下上传文件或将 a 传递给 DropBox API?

标签: pythondjangodropbox-api

解决方案


要在将文件上传到 Dropbox 时指定写入模式,请将所需的参数作为参数传递WriteModefiles_upload方法mode。看起来像这样:

dbx.files_upload(f.read(), PATH, mode=dropbox.files.WriteMode('overwrite')

这仅控制 Dropbox 如何提交文件(有关信息,请参阅文档WriteMode;它不控制您上传的数据。在您的代码中,它正在上传返回的任何内容f.read(),因此请确保这是您所期望的。


推荐阅读