我正在构建一个 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/