【问题标题】:upload files to private location in django将文件上传到 django 中的私人位置
【发布时间】:2014-01-24 04:16:18
【问题描述】:

到目前为止,我在FileFields 的 django 文档中找到的所有内容以及管理上传的文件似乎都假设您希望上传的文件最终位于 MEDIA_ROOT 下的位置,该位置可以从 @ 下的 URL 提供987654324@ 有机制提供对文件的访问权限,但它们似乎不在 MEDIA_URL 路径中。

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

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

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

【问题讨论】:

  • MEDIA_ROOT中正常保存文件,然后用脚本读取文件,将其保存在另一个地方并删除它。
  • 谢谢,但我真的不希望文件在短时间内可用,或者在失败或错误允许上传完成但不能删除的情况下。

标签: django file-upload


【解决方案1】:

默认的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 工具来处理文件...表单、管理员等应该都可以工作。

【讨论】:

  • 谢谢 - 我会尽快尝试一下,然后报告。
  • @rayjay 你有没有得到改变来恢复它?
猜你喜欢
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 2013-11-30
  • 2019-12-21
  • 2017-09-29
  • 2023-03-19
  • 2014-11-19
  • 1970-01-01
相关资源
最近更新 更多