djangstorages将FileField和ImageField上传到Dropbox

2024-09-30 16:23:28 发布

您现在位置:Python中文网/ 问答频道 /正文

(Django 2.0、Django Rest Framework 3.8、python3.6、Django Storages 1.7、Dropbox 9.1)

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

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

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

Dropbox > Apps > 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'

其中storages也列在已安装的应用程序中。下面是我要上载的模型字段:

^{pr2}$

我尝试过使用和不使用/字符,并使用upload_to=DjangoAppNameHere同时使用FileField和{}字符,但没有成功。Dropbox的文档在django-storages包中相当少,并且没有描述如何设置一个字段使其工作。在


Tags: pathdjango文件夹urlbaseosdirstatic
2条回答

这是一个老问题,只是为了帮助那些可能有类似问题的人。在

我有两种选择。在

  1. 上传文件时使用linux机器。这将允许API上传您的图像,因为它可能是与服务器相同的文件系统。

  2. 仅在服务器上使用DROPBOX API,在本地开发时使用本地文件存储。服务器运行在unix上,它不会产生错误。

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

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

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

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

相关问题 更多 >