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()   

備註:壓縮文件中還有中文文件名會報錯      

相關文章
相關標籤/搜索