Python Flask写接口上传文件

概述

在Python Web开发中,使用Flask框架可以快速搭建一个简单而强大的Web应用程序。本文将介绍如何使用Python Flask实现一个接口,用于上传文件并通过GET方法获取上传的文件数据。

实现步骤

步骤 描述
1 创建Flask应用
2 创建上传文件的HTML表单
3 编写接口函数,处理上传的文件
4 处理GET请求,返回上传的文件数据

详细步骤

1. 创建Flask应用

首先,我们需要创建一个Flask应用来处理HTTP请求。下面是一个简单的示例代码:

from flask import Flask
app = Flask(__name__)

2. 创建上传文件的HTML表单

接下来,我们需要在前端页面上创建一个HTML表单,用于上传文件。可以使用简单的HTML代码来实现:

<form action="/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="Upload">
</form>

3. 编写接口函数,处理上传的文件

在Flask应用中,我们可以使用@app.route装饰器来定义接口函数。下面是一个处理文件上传的接口函数示例:

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    # 将上传的文件保存到指定目录
    file.save('uploads/' + secure_filename(file.filename))
    return 'File uploaded successfully!'

在上述代码中,request.files['file']用于获取上传的文件对象。我们可以通过该对象进行一些操作,例如保存到指定目录。secure_filename函数用于确保文件名的安全性。

4. 处理GET请求,返回上传的文件数据

如果需要通过GET方法获取上传的文件数据,我们可以编写一个相应的接口函数来实现。下面是一个示例代码:

@app.route('/file/<filename>', methods=['GET'])
def get_file(filename):
    file_path = 'uploads/' + filename
    if os.path.exists(file_path):
        with open(file_path, 'rb') as file:
            return file.read()
    else:
        return 'File not found!'

在上述代码中,app.route('/file/<filename>')用于定义一个带有动态路由参数的接口。接口函数中,我们首先判断文件是否存在,如果存在则将文件内容返回给客户端,否则返回提示信息。

代码解释

  1. Flask应用的创建:通过Flask(__name__)创建一个Flask应用对象。
  2. HTML表单的创建:通过<form>标签创建一个上传文件的HTML表单。
  3. 接口函数的定义:使用装饰器@app.route定义一个接口函数,可以通过methods参数指定接口支持的HTTP方法。
  4. 文件操作:使用request.files['file']获取上传的文件对象,并通过save方法将文件保存到指定目录。
  5. 文件读取:使用open函数打开文件,并使用read方法读取文件内容。

关系图

erDiagram
    File --|> Upload
    File --|> Download
    File: file_name
    Upload: POST /upload
    Download: GET /file/file_name

以上就是使用Python Flask框架实现上传文件并通过GET方法获取上传文件数据的步骤和代码解释。通过这个例子,希望可以帮助小白开发者快速掌握相关知识。