Django加入上传文件的路径

时间:2019-01-03 15:28:42

标签: django

(有5或6个不同的SO问题和答案可以解决类似的问题-我曾尝试实施其解决方案,但未成功。)

我正在尝试实现一个页面,用户可以在其中拖放以上传Excel文件,然后对该文件进行解析并提取信息以创建各种模型。

文件上传没有问题,已成功存储在服务器上,并在模型的FileField中引用。

但是,我无法使用xlrd获取后续功能来访问文件。任何尝试引用该文件的操作都会导致400错误的请求,并导致连接路径位于基本路径组件外部的错误。

urls.py

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

settings.py

STATIC_ROOT = os.path.join(BASE_DIR,'static')
MEDIA_ROOT = os.path.join(BASE_DIR,'media')

STATIC_URL = '/static/'
MEDIA_URL = '/media/'

我也尝试了与其他文章中建议的相同的方法,但在_ROOT后面加了斜杠。

产生的错误(例如,通过File.file.path调用文件)始终具有以下形式:

django.core.exceptions.SuspiciousFileOperation: The joined path (/media/sheet.xlsx) is located outside of the base path 
component (/PATH-TO-DJANGO-APP/SchedulePosting/media)

1 个答案:

答案 0 :(得分:0)

您没有获取具有完整路径的文件。在文件路径之前提供django BASE_DIR。像这样:

os.path.join(BASE_DIR, File.file.path.lstrip('/'))