Python实现文件上传和下载
简介
文件上传和下载是 Web 开发中常见的功能之一。Python 提供了多种库和框架来实现文件上传和下载的功能,其中最常见的是使用 Flask 和 Django 这两个 Web 框架。本文将介绍如何使用 Flask 实现文件上传和下载的功能,并附带相应的代码示例。
文件上传
文件上传是将本地计算机上的文件传输到服务器的过程。在 Python 中,我们可以使用 Flask 的 request
对象来处理文件上传。
- 首先,我们需要在 HTML 页面上添加一个文件上传的表单,代码如下:
<form action="/upload" enctype="multipart/form-data" method="POST">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
- 在 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!'
- 在上述代码中,我们将上传的文件保存到了
path/to/save/file
的路径下。你可以根据自己的需求来修改保存的路径。
文件下载
文件下载是将服务器上的文件传输到本地计算机的过程。在 Python 中,我们可以使用 Flask 的 send_file
函数来实现文件下载的功能。
- 首先,我们需要在 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)
- 在上述代码中,我们通过
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 文档: <