#!-*-coding=utf-8-*- # from flask import Flask # # app = Flask(__name__) # # # @app.route('/') # def hello_world(): # return 'Hello World!' # # # if __name__ == '__main__': # app.run() 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('/test/from') def upload_test(): return render_template('from.html') # 上傳文件 @app.route('/api/upload',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['myfile'] # 從表單的file字段獲取文件,myfile為該表單的name值 if f and allowed_file(f.filename): # 判斷是否是允許上傳的文件類型 fname = secure_filename(f.filename) print fname ext = fname.rsplit('.',1)[1] # 獲取文件后綴 unix_time = int(time.time()) # new_filename = str(unix_time)+'.'+ext # 修改了上傳的文件名 new_filename = '12'+'.'+ext # 修改了上傳的文件名 f.save(os.path.join(file_dir,new_filename)) #保存文件到upload目錄 token = base64.b64encode(new_filename) print token return jsonify({"errno":0, "errmsg":"上傳成功","token":token}) else: return jsonify({"errno":1001, "errmsg":"上傳失敗"}) @app.route('/api/load',methods=['GET']) def load(): if request.method == "GET": if os.path.isfile(os.path.join('upload', '12.jpg')): return send_from_directory('upload', '12.jpg', as_attachment=True) # abort(404) if __name__ == '__main__': app.run(debug=True, port=9999)
官網:http://docs.jinkan.org/docs/flask/patterns/fileuploads.html