上傳文件示例代碼html
#encoding:utf8 from werkzeug.utils import secure_filename from flask import Flask,render_template,jsonify,request,send_from_directory import time import os import base64 app = Flask(__name__) UPLOAD_FOLDER='upload' # 用於保存上傳文件的文件夾名稱 app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER basedir = os.path.abspath(os.path.dirname(__file__)) ALLOWED_EXTENSIONS = set(['txt','png','jpg','xls','JPG','PNG','xlsx','gif','GIF']) # 容許上傳的文件格式 # 用於判斷文件後綴 def allowed_file(filename): return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS # 用於測試上傳,稍後用到 @app.route('/',methods=['GET'],strict_slashes=False) def indexpage(): return render_template('index.html') # 上傳文件 @app.route('/',methods=['POST'],strict_slashes=False) def api_upload(): file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER']) if not os.path.exists(file_dir): os.makedirs(file_dir) f = request.files['file'] # 從表單的file字段獲取文件,file爲該表單的name值 if f and allowed_file(f.filename): # 判斷是不是容許上傳的文件類型 fname = secure_filename(f.filename) ext = fname.rsplit('.',1)[1] # 獲取文件後綴 unix_time = int(time.time()) new_filename = str(unix_time)+'.'+ext # 修改了上傳的文件名 f.save(os.path.join(file_dir,new_filename)) #保存文件到upload目錄 token = base64.b64encode(new_filename) print(token) return jsonify({"errno":0, "msg":"succeed ","token":token}) else: return jsonify({"errno":1001, "errmsg":u"failed"}) if __name__ == '__main__': app.run(debug=True, port=9990)
下載json
send_file('供下載的文件名', as_attachment=True, attachment_filename="下載給用戶的文件名")