(有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)
答案 0 :(得分:0)
您没有获取具有完整路径的文件。在文件路径之前提供django BASE_DIR
。像这样:
os.path.join(BASE_DIR, File.file.path.lstrip('/'))