【问题标题】:Where to store user uploaded files in Django在 Django 中存储用户上传文件的位置
【发布时间】:2016-01-29 08:43:19
【问题描述】:

我正在构建一个 Django 应用程序,用户将在其中上传 CSV 文件。然后将 CSV 文件中的每一行添加到数据库中(在验证数据之后)。然后可以丢弃该文件。

从 Django 文档中,我使用它来保存文件。

def handle_uploaded_file(f):
    with open('some/file/name.txt', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

Django 网站上有很多关于处理用户上传文件的警告,所以我的问题是,这些文件应该保存在哪里?我的猜测是没关系,但我想确定。

目前我计划在我的设置文件中创建一个名为 UPLOADS_URL 的变量。然后所有上传的文件都将存储在那里。

【问题讨论】:

    标签: python django security csv


    【解决方案1】:

    确实,将这些文件放在哪里并不重要,尤其是在您丢弃它们之后。唯一重要的是将它们放在您的网络服务器无法访问的地方。因此,例如,如果您的静态文件和/或您的应用程序代码存储在 /var/www 目录中,请不要将上传的文件放在那里。

    已有名为MEDIA_ROOT and MEDIA_URL 的Django 设置用作存储上传文件的默认位置。 MEDIA_ROOT 是存储文件的路径,MEDIA_URL 是 http 客户端可用于检索上传文件的 URL 路径(因此在您的情况下不需要它)。

    您需要真正注意的是 CSV 文件的内容。由于您要将它们存储在数据库中并稍后重新使用它们,因此您应该在存储之前仔细验证内容。例如,如果您要存储一个稍后将在网站上显示的字符串,您需要确保它不包含任何 javascript...

    【讨论】:

    • 这对cmets很有帮助,非常感谢。我会将其存储在 MEDIA_ROOT 中,然后删除。关于内容,我正在通过示例 3 中所示的表单运行输入:pydanny.com/core-concepts-django-modelforms.html 我假设表单将检查内容是否不包含 javascript?
    • 不客气。是的,正如帖子的作者所说,通常最好依靠现有的解决方案,并且您使用的表格可能涵盖了您。但最好查看其文档或代码。
    • 链接给出了 404
    • @MartinThoma 已修复,谢谢。
    猜你喜欢
    • 2017-02-10
    • 2020-04-02
    • 2017-09-29
    • 1970-01-01
    • 2014-09-27
    • 2015-01-03
    • 1970-01-01
    • 2013-06-03
    • 2014-02-18
    相关资源
    最近更新 更多