我想知道通过使用Django/Python的Web应用程序上传大约4 GB大小的文件是否有什么影响?我记得在过go ,使用Java的流式上传是首选方法,但是现在仍然是这样吗,或者使用Django/Python这样做是完全安全的吗?

推荐答案

默认情况下,如果上传的文件数据小于2.5MB,Django会将其放入内存.任何较大的内容都将写入服务器的/tmp目录,然后在传输完成时进行复制.Django的许多文件上传设置都可以自定义,详情请参见the documentation.您还可以自定义文件处理,您肯定希望这样做.

在我们考虑任何技术限制之前,使用浏览器上传如此大的文件会给用户带来非常糟糕的体验.没有关于传输如何进行的反馈(尽管google Chrome确实以百分比的形式显示上传状态),也没有办法暂停或恢复传输.

您还可能在服务器上遇到问题.除了每个线程将花费极长的时间来处理流数据之外,您还有时间让系统将结果文件从/tmp复制到其正确的位置.

除非您非常有信心能够预见服务器在上传过程中可能出现的任何问题,否则我认为这是一个坏主意.通过谷歌很难找到这方面的任何信息,而且似乎有很多关于大文件上传问题的点击.

虽然Django在技术上能够接收如此大的上传文件,但非常糟糕的用户体验和技术困难意味着这可能不是最好的方法.您有没有考虑过使用专用软件来处理文件传输?

Django相关问答推荐

Django中有修改字段值的挂钩吗?

当前路径 **/POST 与其中任何一个都不匹配

Django 根据子级过滤父级

在 Django 中按月份和年份对帖子进行分类

使用 Crispy Forms 时 Django 返回 'TemplateDoesNotExist'

使用 Pytest 在 Django 中编写测试用例时如何加载特定目录中的所有固定装置

int_list_validator在 Django 表单中不起作用

Django中基于令牌的身份验证

使用基于类的 UpdateView 在 Django 中更新用户模型

Django Facebook Connect 应用推荐

如何在终端中切换 Python 版本?

在python中查找对对象的所有引用

django post_save 更新信号

更改 Django ModelChoiceField 以显示用户的全名而不是用户名

如何使用或使用 Django 的模型过滤系统?

如何在 django 中捕获UNIQUE constraint failed404

'function' 对象没有属性 'as_view'

为整个结果集向 Django Rest Framework 结果添加额外数据

Django:按位置排序,忽略 NULL

如何获取 Django 模型字段对象的值