2

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

这是python + GAE上的python解决方案,但我是python web框架的新手;我对烧瓶知之甚少
,这个解决方案基于 webapp2,这对我来说非常复杂,而且在 GAE 上也是如此;那是另一个故事。所以任何人都可以生成它的flask等价物或任何其他可能的方式来做到这一点flask???

4

2 回答 2

5

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

于 2012-12-22T12:30:04.290 回答
4

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


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

没有。根据werkzeug 用于处理上传文件的文档Flask所有浏览器都不能保证在上传之前验证内容大小。只有 中所有数据的总内容长度request才能保证存在。网络浏览器。因此,Flask/werkzeug 只能在文件上传后强制检查。

但是,为了避免您的网络服务器因内存溢出而崩溃,您可以并且应该限制可上传的大小。MAX_CONTENT_LENGTH这是您可以在应用程序的配置文件中提及的配置变量。

来自Flask doc的示例用法:

from flask import Flask, Request

app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024  # for 16MB max-limit.

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

您可以质疑我为什么要进行额外的扩展
因为,Flask是一个微型框架。不是一个全能的框架。

于 2015-12-05T14:30:52.447 回答