使用Python实现本地图片上传

本文将指导你如何使用Python将本地图片上传到服务器。通过这个过程,你将学会如何使用 Flask 这个 web 框架来构建一个简单的应用程序。

整体流程

我们的大致流程如下:

步骤 描述
1 安装 Flask 库
2 创建 Flask 应用
3 编写 HTML 表单
4 编写图片上传处理逻辑
5 启动 Flask 服务并测试上传

步骤详解

1. 安装 Flask 库

首先,你需要确保已经安装了 Flask。你可以在命令行中执行以下命令进行安装:

pip install Flask

这条命令会安装 Flask 核心库,以便你能够使用它构建 web 应用。

2. 创建 Flask 应用

接下来,我们创建一个新的 Python 文件(例如 app.py),并编写基本的 Flask 应用程序。

from flask import Flask, render_template, request
import os

app = Flask(__name__)

# 设置上传文件的目录
app.config['UPLOAD_FOLDER'] = 'uploads/'
# 允许的文件扩展名
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif'}

def allowed_file(filename):
    # 检查文件扩展名是否在允许的列表中
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS

@app.route('/')
def index():
    return render_template('upload.html')

@app.route('/upload', methods=['POST'])
def upload_file():
    if 'file' not in request.files:
        return '没有文件被上传'
    file = request.files['file']
    if file.filename == '':
        return '没有选择文件'
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)  # 处理安全性
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))  # 保存文件
        return '文件已成功上传'
    return '文件格式不正确'

if __name__ == '__main__':
    app.run(debug=True)

代码说明:

  • render_template: 用于渲染 HTML 模板。
  • request: 用于处理 HTTP 请求数据。
  • os: 用于处理与操作系统交互的任务。
  • allowed_file: 确保上传文件具有正确的扩展名。

3. 编写 HTML 表单

在与 app.py 文件相同的目录中创建一个名为 templates 的文件夹,并在其中创建一个 upload.html 文件:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>图片上传</title>
</head>
<body>
    上传一张图片
    <form method="post" action="/upload" enctype="multipart/form-data">
        <input type="file" name="file" accept="image/*">
        <button type="submit">上传</button>
    </form>
</body>
</html>

代码说明:

  • enctype="multipart/form-data": 允许浏览器以不同的编码格式发送表单数据,以支持文件上传。

4. 启动 Flask 服务并测试上传

现在,你可以启动 Flask 应用:

python app.py

然后,打开浏览器访问 `

序列图

以下是简化的序列图,展示了上传过程中的每一步:

sequenceDiagram
    participant User
    participant Browser
    participant FlaskApp
    participant Server

    User->>Browser: 填写表单并选择文件
    Browser->>FlaskApp: 提交上传请求
    FlaskApp->>Server: 保存文件
    Server-->FlaskApp: 返回上传成功
    FlaskApp-->Browser: 显示成功消息

关系图

以下是应用相关的实体关系图:

erDiagram
    USER {
        string name
        string email
    }
    IMAGE {
        string filename
        string path
    }
    USER ||--o{ IMAGE : uploads

结尾

通过上面的步骤,你已经成功地实现了使用 Python 上传本地图片的功能。Flask 框架使得开发变得快捷且高效,而且通过编写 HTML 表单,你能更直观地实现文件上传的功能。希望这篇文章能够帮助你在 Python 开发的道路上迈出坚实的一步!继续探索,祝你编码愉快!