python - 上传的文件在 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?
解决方案
要在将文件上传到 Dropbox 时指定写入模式,请将所需的参数作为参数传递WriteMode
给files_upload
方法mode
。看起来像这样:
dbx.files_upload(f.read(), PATH, mode=dropbox.files.WriteMode('overwrite')
这仅控制 Dropbox 如何提交文件(有关信息,请参阅文档WriteMode
);它不控制您上传的数据。在您的代码中,它正在上传返回的任何内容f.read()
,因此请确保这是您所期望的。
推荐阅读
- firebase - Firestore 集合是否在物理上彼此隔离?
- ios - 如何解决:在 macOS 包中找不到架构的符号
- c# - 剑道自动完成数据源显示未找到数据
- clang - clang-tidy 是否使 scan-build 变得多余?
- wordpress-gutenberg - 计算前端的 Gutenberg 块?
- python - 扫描文件夹(os walk),将更新的文件和文件夹添加到 sqlite3
- javascript - 如何一次性使用点击处理程序创建 DOM 元素?
- javascript - 使用 ES 6 方法转换 JSON 数组
- jenkins - 如何强制詹金斯作业等到所有作业循环执行
- ajax - 如何在基于 ajax 的 MVC.NET Web 应用程序中管理页面导航