Flask保存上传的文件

import os
import uuid
import shutil
from flask import Flask, render_template, request
# from werkzeug.datastructures import FileStorage

app = Flask(__name__)

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

@app.route("/upload", methods=["GET", "POST"])
def upload():
    if request.method == "GET":
        return render_template("upload.html")
    obj = request.files.get("file")
    print(obj)  # <FileStorage: "test.zip" ("application/x-zip-compressed")>
    print(obj.filename)  # test.zip
    print(obj.stream)  # <tempfile.SpooledTemporaryFile object at 0x0000000004135160>
    # 检查上传文件的后缀名是否为zip
    ret_list = obj.filename.rsplit(".", maxsplit=1)
    if len(ret_list) != 2:
        return "请上传zip类型压缩文件"
    if ret_list[1] != "zip":
        return "请上传zip类型压缩文件"
    # 1、直接保存文件
    obj.save(os.path.join(BASE_DIR, "files", obj.filename))
    # 2、保存解压后的文件(原压缩文件不保存)
    target_dir = os.path.join(BASE_DIR, "files", str(uuid.uuid4()))
    shutil._unpack_zipfile(obj.stream, target_dir)
    # 3、先保存压缩文件到本地,再对其进行解压,然后删除压缩文件
    return "上传成功"

if __name__ == "__main__":
    app.run()

猜你喜欢

转载自www.cnblogs.com/believepd/p/10339394.html