文件上传
import base64 os time from flask Flask,render_template,request,jsonify,send_from_directory,abort from werkzeug.utils secure_filename app = Flask(__name__) UPLOAD_FOLDER = 'upload' app.config[UPLOAD_FOLDER'] = UPLOAD_FOLDER basedir = os.path.abspath(os.path.dirname(__file__)) ALLOWED_EXTENSIONS = set([txt',pngjpgxlsJPGPNGxlsxgifGIF]) # 判断文件的后缀 def allowed_file(filename): return .' in filename and filename.rsplit(in ALLOWED_EXTENSIONS 用于测试上传 @app.route(/test/upload) upload_test(): return render_template(upload.html) 上传文件 @app.route(/api/uploadPOST'],strict_slashes=False) api_upload(): file_dir = os.path.join(basedir,app.config[]) if not os.path.exists(file_dir): os.makedirs(file_dir) f = request.files[myfile'] 从表单的file字段获取文件,myfile为该表单的name值 if f and allowed_file(f.filename): fname = secure_filename(f.filename) print(fname) ext = fname.rsplit(] unix_time = int(time.time()) new_filename = str(unix_time) + ' + ext f.save(os.path.join(file_dir,new_filename)) return jsonify({"errno": 0,1)">errmsg": 上传成功"}) else: ": 1001,1)">上传失败}) if __name__ == __main__: app.run(debug=True)
上面我们写了一个上传接口,我们为了测试这个接口是否工作正常,还得写一个页面(upload.html):
<form id=form1" method=post" action=" enctype=multipart/form-data"> <div> <input id=File1" type=file" name="/> <input type=submit">提交</input> </div> </form>
文件下载
文件下载要比上传简单的多,核心代码如下:
@app.route(/api/download/<filename>GET download(filename): if request.method == if os.path.isfile(os.path.join(,filename)): return send_from_directory(True) abort(404)