python - Django-storage 将 FileField 和 ImageField 上传到 Dropbox

标签 python django django-rest-framework dropbox python-django-storages

(Django 2.0、Django Rest Framework 3.8、Python 3.6、Django 存储 1.7、Dropbox 9.1)

我正在尝试将文件上传到我创建的 Dropbox 应用文件夹,但每次尝试都会遇到相同的错误:

C:/TrainerPics/UI_4.png' 与模式 '(/(.|[\r\n])*|id:.*)|(rev:[0-9a-f] {9,})|(ns:[0-9]+(/.*)?)'

在桌面上的 Dropbox 仪表板上,我要上传到的文件夹显示为:

Dropbox > 应用 > DjangoAppNameHere

这是我在 settings.py 中的设置:

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

DEFAULT_FILE_STORAGE = 'storages.backends.dropbox.DropBoxStorage'
DROPBOX_OAUTH2_TOKEN = 'some_token_here'

其中存储也列在已安装的应用程序中。这是我尝试上传的模型字段:

trainer_profile_pic = models.ImageField(upload_to="TrainerPics/", null=True, blank=True)

我已经尝试过使用和不使用 / 字符,并尝试使用 upload_to=DjangoAppNameHere 以及 FileField >ImageField 没有成功。 django-storages 包中的 Dropbox 文档相当稀疏,并且没有描述如何设置字段以使其正常工作。

最佳答案

该错误消息来自 Dropbox API,表明提供的路径与预期格式不匹配。也就是说,当通过 Dropbox API 上传到 Dropbox 时,您需要以与提供的模式匹配的格式为上传的文件提供所需的路径。

最常用的格式是该模式的第一部分,它只是相对于 Dropbox 中根目录的远程路径的“/”分隔路径。例如:'/TrainerPics/UI_4.png'

根据输出,您将提供一个看起来像本地 Windows 文件系统路径的路径:'C:/TrainerPics/UI_4.png'

您需要更新应用/配置以提供远程路径。

关于python - Django-storage 将 FileField 和 ImageField 上传到 Dropbox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52765982/

相关文章:

python - 在单元测试代码中调用 Django 命令

python - 强制 matplotlib 图的背景透明

python - 使用 OpenCv 进行透视检测

python - Django cache.set() 导致重复键错误

python - Cherrypy:多处理

Django rest 框架 - PUT 请求的身份验证错误

django - Django 中的表单和文件上传

jquery - Django 模板使用带有 {{}} 的 jquery 脚本

django - 禁用 gmail 中不太安全的应用程序设置后立即发送邮件进行测试

django - 如何自定义 Django REST Framework GET 请求的响应?