• 上传文件大小限定
    • 问题
    • Solution

    上传文件大小限定

    问题

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

    Solution

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

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

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

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

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

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