在使用Django Filebrowser上传的图像上缺少前导斜杠

时间:2016-11-09 20:26:18

标签: python django file-browser django-filebrowser

当我尝试上传图片时,我遇到了Django-Filebrowser的问题。我使用以下版本: Django 1.8.7 Filebrowser 3.6.4 Python 2.7

当我尝试上传图片时,一切都按预期工作,上传的文件放在正确的文件夹中没有任何问题;但是生成的文件URL没有任何正确的斜杠来正确提供文件。

例如,如果我尝试上传“test.jpg”,最终的图片网址将是“uploads / test.jpg”和“_versions / test_xxx.jpg”,即使在Filebrowser面板中也会出现问题,因为生成的请求将发送给http://localhost:8000/admin/filebrowser/browse/uploads/test.jpghttp://localhost:8000/admin/filebrowser/browse/_versions/test.jpg,而不是http://localhost:8000/uploads/test.jpghttp://localhost:8000/_versions/test.jpg,服务器可以正常投放。

(请注意,Filebrowser面板网址为http://localhost:8000/admin/filebrowser/

这是我的设置:

urls.py:

urlpatterns = [
    url(r'^admin/filebrowser/', include(site.urls)),
    url(r'^admin/', include(admin.site.urls)),

    url(r'^', include('pages.urls')),
    url(r'^blog/', include('articles.urls')),

    url(r'^tinymce/', include('tinymce.urls')),
    url(r'^grappelli/', include('grappelli.urls')),
]

settings.py

FILEBROWSER_DIRECTORY = 'uploads/'
FILEBROWSER_VERSIONS_BASEDIR = '_versions/'

FILEBROWSER_DIRECTORY添加前导斜杠会触发SouspiciusFileOperation错误,因为'/ uploads /'位于项目文件夹之外。

提前致谢。

1 个答案:

答案 0 :(得分:0)

最后,我明白了这一点。它足以明确设置MEDIA_ROOTMEDIA_URL

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

现在,Filebrowser会在这个新的父文件夹中搜索"uploads/""_versions/"个文件夹,因此需要相应地提供"/media"