flask实现文件的上传

  文件上传过程当中,必定要进行文件大小的校验,若是用户上传文件过大,好比:100GB,因此一直在处理这个请求,别的请求进来就没法处理了,因此要限制上传文件的大小。html

flask中文件上传大小的校验

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

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

自定制错误返回信息flask

在flask内部,会帮咱们校验,若是上传文件大于设置,会返回一个 413 的异常app

因此自定义这个413的异常信息ide

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

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

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模块的两个方法debug

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

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

     解压zip包    shutil._unpack_zipfile()   

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

相关文章
相关标签/搜索