将文件上传到django中的私人位置

时间:2014-01-06 17:14:20

标签: django file-upload

到目前为止,我在FileFields上的django文档中找到并管理上传文件的所有内容似乎都假设您希望上传的文件最终位于MEDIA_ROOT下可以通过{URL提供的位置{1}}在MEDIA-URL下有一些机制可以提供访问文件的授权,但似乎并不是它们不在MEDIA_URL路径中。

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

我不希望文件可以在某个URL下载。

我希望能够使用FileField或一些附加软件包将文件上传到目录树的不同部分 - 比如说UPLOAD_ROOT不在MEDIA_ROOT之下,所以它可以永远不会被提供,但我的models和其他'python`代码可以访问。

1 个答案:

答案 0 :(得分: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工具进行文件处理...表单,管理员等都应该可以工作。