Flask 上傳下載文件

 

上傳文件示例代碼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="下載給用戶的文件名")
相關文章
相關標籤/搜索