我们可以在上传python-flask之前计算上传文件大小

时间:2012-12-22 06:16:17

标签: python flask

我有一个简单的烧瓶应用程序,我上传单个文件但文件大小小于5MB 为此我已经在我的flask-app中定义了if request.content_length < 5.250e+6: ## setting upload limit to 5MB测试用例;但这是在上传后验证文件大小;或者可能是我错了。
有没有办法在上传之前获取文件大小???

这是python + GAE上的python solution,但我是python web框架的新手;我对瓶子知之甚少,这个解决方案基于webapp2,这对我来说非常复杂,而且对GAE也很复杂;那是另一个故事。 所以任何人都可以在flask中生成flask等效或其他任何可能的方法吗???

2 个答案:

答案 0 :(得分:3)

Flask能够在上传过程中限制文件大小,请参阅documentation。您只需在配置应用时设置MAX_CONTENT_LENGTH

答案 1 :(得分:1)

这是AudriusKažukauskas答案的一个扩展版本:

  

所以有没有办法在上传之前获取文件大小???

即可。 根据{{​​1}}用于处理上传文件的werkzeug's documentation,您无法在上传之前验证内容大小,并非所有浏览器都能保证。只保证Flask中所有数据的总内容长度。网络浏览器。因此,Flask / werkzeug只能在文件上传后强制执行检查。

但是,为避免Web服务器因内存溢出而崩溃,您可以而且应该限制可上载的大小。这里有配置变量request,你可以在app的配置文件中提到它。

来自Flask doc的示例用法:

MAX_CONTENT_LENGTH

但是,对于任何严肃的应用程序,您应该考虑使用Flask-plugin Flask-Uploads,它允许更高级的选项,如白名单和黑名单某些文件类型,基于类型的上传规则,可配置的上传目的地等。

您可以质疑 为什么我应该选择额外的分机
因为,from flask import Flask, Request app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024 # for 16MB max-limit. 是一个微框架。不是一个全能的框架。