将文件上传到Django的私有位置

问题描述 投票:2回答:1

一切,我发现Django文档中至今FileFields和管理上传的文件似乎认为你要上传的文件的下一个位置,最终MEDIA_ROOT可以从被服务URLMEDIA-URL有机制,为提供授权访问文件,但似乎文件不在MEDIA_URL路径中。

我要做的是能够将文件(实际上是Excel电子表格)上传到应用程序内部可以使用xlrd访问的位置,以通过模型将数据添加到数据库中。

我不希望通过某些URL下载文件。

我希望能够使用FileField或某些附加程序包将文件上传到目录树的不同部分-比如说UPLOAD_ROOT不在MEDIA_ROOT下,因此它永远无法使用,但是我的modelsmodels可以访问其他“ python”代码。

django file-upload
1个回答
3
投票

默认的FileSystemStorage坚持保存在MEDIA_ROOT下面,但是您可以为私有文件使用其他存储:

# in your models.py, or in a separate storage.py
upload_storage = FileSystemStorage(location=UPLOAD_ROOT, base_url='/does/not/matter/')

# models.py
class YourModel(models.Model):
    file = models.FileField(upload_to="some/relative/path", storage=upload_storage)

然后,使用常规的Django工具进行文件处理...表格,管理员等都应正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.