python - Django 中存储用户上传的文件的位置

标签 python django security csv

我正在构建一个 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 的变量。所有上传的文件都将存储在那里。

最佳答案

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

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

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

关于python - Django 中存储用户上传的文件的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080194/

相关文章:

python - 没有名为 'lxml' Windows 8.1 的模块

python - 在单个语句中在 python 中多次测试单个变量

django - 内联表单中的自定义表单

php - 在安全 API 通信中使用请求签名时防止重放攻击?

security - GLassfish SSL 配置页面级别

python - ntpath.py 上的特殊错误

python - Pyspark 加盐 : replace null in column with random negative values

python - 如何在 OS X Leopard 上安装 MySQL 和 Python MySQL 包?或者我如何学习如何使用 OS X 成为网络开发人员?

python - 如何在 Django 中插入多条记录?

asp.net-mvc - MVC RequireHttps 属性毫无值(value)?