到目前为止,我在FileFields
上的django文档中找到并管理上传文件的所有内容似乎都假设您希望上传的文件最终位于MEDIA_ROOT
下可以通过{URL
提供的位置{1}}在MEDIA-URL
下有一些机制可以提供访问文件的授权,但似乎并不是它们不在MEDIA_URL路径中。
我想要做的是能够将文件(实际上是excel电子表格)上传到我的应用程序内部可以使用xlrd
访问的位置,以通过模型将数据添加到我的数据库。
我不希望文件可以在某个URL下载。
我希望能够使用FileField或一些附加软件包将文件上传到目录树的不同部分 - 比如说UPLOAD_ROOT
不在MEDIA_ROOT
之下,所以它可以永远不会被提供,但我的models
和其他'python`代码可以访问。
答案 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工具进行文件处理...表单,管理员等都应该可以工作。