• flask实现文件的上传


      文件上传过程中,一定要进行文件大小的校验,如果用户上传文件过大,比如:100GB,所以一直在处理这个请求,别的请求进来就无法处理了,所以要限制上传文件的大小。

    flask中文件上传大小的校验

      flask中,提供了校验文件大小的机制,所以在配置文件中进行配置,并重写异常返回信息即可。

    设置配置文件:app.config['MAX_CONTENT_LENGTH']=1024 * 1024 * 5 

    自定制错误返回信息

    在flask内部,会帮我们校验,如果上传文件大于设置,会返回一个 413 的异常

    所以自定义这个413的异常信息

    @app.errorhandler(413)
    def error(arg):
        ret = make_response('上传文件最大支持:5M')
        ret.status_code = 413
        return ret
    自定制异常信息

    这个在mac和linux上不报错,但是在Windows下会报错,解决方式

    from gevent.pywsgi import WSGIServer
    from flask import Flask,request,render_template,make_response
    
    app = Flask(__name__)
    app.debug = True
    app.config['MAX_CONTENT_LENGTH'] = 1024 *1024 * 7
    
    @app.route('/')
    def hello():
        return 'Hello World'
    
    @app.route('/upload',methods=['GET','POST'])
    def upload():
        if request.method == 'POST':
            file = request.files.get('file')
            print(file.stream)
        return render_template('upload.html')
    
    @app.errorhandler(413)
    def error(arg):
        ret = make_response('上传文件最大支持:5M')
        ret.status_code = 413
        return ret
    
    if __name__ == '__main__':
        # app.run(host='127.0.0.1',port=5000)
        http_server = WSGIServer(('127.0.0.1', 5000), app)
        http_server.serve_forever()
    解决Windows下的报错

    文件的压缩和解压

       需要借助python标准库中的shutil模块的两个方法

    压缩:shutil.make_archive("文件压缩后存放的路径","压缩的格式","要压缩的文件路径")      

    解压:解压tar包   shutil._unpack_tarfile("要解压的文件路径或者一个bytes类型的文件对象","解压后文件的存放路径")     

         解压zip包    shutil._unpack_zipfile()   

    备注:压缩文件中还有中文文件名会报错      

  • 相关阅读:
    NetBeans 时事通讯(刊号 # 95 Mar 19, 2010)
    现在才知道TR1的错误在VC9的SP1中解决
    TinyXml快速入门(三)
    Install python 2.6 in CentOS Stack Overflow
    rpm forge install on centos 5
    Linux tee ysdaniel的专栏 博客频道 CSDN.NET
    python26 gramma
    一个简单的基于编辑距离的英文单词查错(Python) Muilpin.Miao的日志 网易博客
    磁盘目录占用空间计算排序工具 ncdu
    PyCon China 2012
  • 原文地址:https://www.cnblogs.com/zhaopanpan/p/9387810.html
Copyright © 2020-2023  润新知