Python实现文件上传和下载

简介

文件上传和下载是 Web 开发中常见的功能之一。Python 提供了多种库和框架来实现文件上传和下载的功能,其中最常见的是使用 Flask 和 Django 这两个 Web 框架。本文将介绍如何使用 Flask 实现文件上传和下载的功能,并附带相应的代码示例。

文件上传

文件上传是将本地计算机上的文件传输到服务器的过程。在 Python 中,我们可以使用 Flask 的 request 对象来处理文件上传。

  1. 首先,我们需要在 HTML 页面上添加一个文件上传的表单,代码如下:
<form action="/upload" enctype="multipart/form-data" method="POST">
  <input type="file" name="file">
  <input type="submit" value="Upload">
</form>
  1. 在 Flask 的路由函数中,我们可以通过 request.files 属性来获取上传的文件,并保存到服务器上的指定路径:
from flask import Flask, request

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload_file():
    file = request.files['file']
    file.save('path/to/save/file')
    return 'File uploaded successfully!'
  1. 在上述代码中,我们将上传的文件保存到了 path/to/save/file 的路径下。你可以根据自己的需求来修改保存的路径。

文件下载

文件下载是将服务器上的文件传输到本地计算机的过程。在 Python 中,我们可以使用 Flask 的 send_file 函数来实现文件下载的功能。

  1. 首先,我们需要在 Flask 的路由函数中添加一个文件下载的路由,代码如下:
from flask import Flask, send_file

app = Flask(__name__)

@app.route('/download')
def download_file():
    path = 'path/to/file'
    return send_file(path, as_attachment=True)
  1. 在上述代码中,我们通过 send_file 函数将路径为 path/to/file 的文件发送给用户。as_attachment=True 表示作为附件下载,默认为 False

流程图

下面是文件上传和下载的流程图:

flowchart TD
    A[用户] -- 上传文件 --> B[HTML 表单]
    B -- 提交表单 --> C[Flask 路由]
    C -- 处理文件 --> D[保存文件]
    
    E[用户] -- 请求下载 --> F[Flask 路由]
    F -- 发送文件 --> G[下载文件]

类图

下面是文件上传和下载的相关类的类图:

classDiagram
    class Flask {
        __init__(self)
        route()
        send_file()
    }
    
    class Request {
        files
    }
    
    class File {
        save()
    }
    
    class Response {
        __init__(self)
    }
    
    class send_file() {
        __init__(self, path, as_attachment)
    }
    
    class HTMLForm {
        enctype
        method
    }
    
    class HTMLInput {
        type
        name
        value
    }
    
    class HTMLSubmit {
        type
        value
    }
    
    class User {
        upload_file()
        download_file()
    }
    
    Flask --> Request
    Flask --> Response
    Request --> File
    Response --> send_file
    User --> HTMLForm
    HTMLForm --> HTMLInput
    HTMLForm --> HTMLSubmit

总结

本文介绍了如何使用 Flask 实现文件上传和下载的功能。通过使用 Flask 的 request 对象处理文件上传,以及使用 send_file 函数实现文件下载,我们可以轻松地实现这一功能。希望本文能对你理解文件上传和下载的实现过程有所帮助。

参考资料

  • Flask 官方文档: <
  • mermaid 文档: <