我有一个简单的烧瓶应用程序,我上传单个文件但文件大小小于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
等效或其他任何可能的方法吗???
答案 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.
是一个微框架。不是一个全能的框架。