文件上傳過程當中,必定要進行文件大小的校驗,若是用戶上傳文件過大,好比: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()
文件的壓縮和解壓
須要藉助python標準庫中的shutil模塊的兩個方法debug
壓縮:shutil.make_archive("文件壓縮後存放的路徑","壓縮的格式","要壓縮的文件路徑") 3d
解壓:解壓tar包 shutil._unpack_tarfile("要解壓的文件路徑或者一個bytes類型的文件對象","解壓後文件的存放路徑") code
解壓zip包 shutil._unpack_zipfile()
備註:壓縮文件中還有中文文件名會報錯