• 2023.11.17使用flask将多个图片文件上传至服务器


    2023.11.17使用flask将多个图片文件上传至服务器

    实现功能:
    1、同时上传多个图片文件
    2、验证文件扩展名
    3、显示上传文件的文件名
    4、显示文件上传结果
    在这里插入图片描述
    程序结构
    在这里插入图片描述
    main.py

    from flask import Flask, request, jsonify, render_template
    import os
    
    app = Flask(__name__)
    
    # 设置上传文件存储目录
    UPLOAD_FOLDER = 'uploads'
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
    
    # 允许上传的文件类型
    ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    # 检查文件名是否合法
    def allowed_file(filename):
        return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
    
    # 处理文件上传
    @app.route('/upload', methods=['POST'])
    def upload_file():
        files = request.files.getlist("file")
        success_files = []
        failed_files = []
    
        for file in files:
            if file and allowed_file(file.filename):
                filename = file.filename
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                success_files.append(filename)
            else:
                failed_files.append(file.filename)
    
        if failed_files:
            return jsonify({'message': '部分文件上传失败', 'failed_files': failed_files})
        else:
            return jsonify({'message': '所有文件上传成功', 'success_files': success_files})
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    index.html

    
    
    
        文件上传
        
        
    
    
        

    文件上传

    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
  • 相关阅读:
    【JavaEE 学习笔记】JavaScript(WebAPI)附代码案例,猜数字网页版(完整版源码)
    Go runtime 调度器精讲(五):调度策略
    js使用canvas实现图片鼠标滚轮放大缩小拖拽预览,显示像素坐标,显示像素值
    Codeforces Round #801 (Div. 2)A~C
    常见工具指令【Vim | GIT | ZIP | UNZIP | IDEA】
    [b01lers2020]Welcome to Earth
    18 OpenCV霍夫变换检测直线
    openlayer 加载4547坐标系 以及 wfs服务数据(或其他坐标系)
    1827. 最少操作使数组递增-贪心算法-原地修改数组
    关于设置html不让浏览器进行缓存的问题
  • 原文地址:https://blog.csdn.net/leigh_chen/article/details/134498567