home > 上传文件大小限定

上传文件大小限定

问题

如何限定上传文件的大小?

Solution

web.py 使用cgi 模块来解析用户的输入, 而 cgi 模块对最大输入大小有限制。

下面的代码限制了最大数据输入为 10MB.

import cgi

# Maximum input we will accept when REQUEST_METHOD is POST
# 0 ==> unlimited input
cgi.maxlen = 10 * 1024 * 1024 # 10MB

请注意这是对POST方法提交数据大小的限制,而不是上传文件大小。当然如果表单中没有其他输入数据,上传文件完全可以达到限制的大小。

cgi 模块将会抛出 ValueError异常,如果数据输入的大小超过了 cgi.maxlen。我们可以捕捉该异常而避免显示不友好的错误信息。

class upload:
    def POST(self):
        try:
            i = web.input(file={})
        except ValueError:
            return "File too large"