📜  烧瓶上传 - Python (1)

📅  最后修改于: 2023-12-03 15:40:48.555000             🧑  作者: Mango

烧瓶上传 - Python

介绍

烧瓶上传是一种常见的文件上传和下载方式,它是基于 HTTP 协议的,可以在 Web 应用中使用。使用 Python 编写烧瓶上传代码可以方便地在 Web 应用中实现文件上传和下载功能。

烧瓶上传的原理

烧瓶上传的原理是通过 HTTP 协议的 POST 请求实现的。在客户端(浏览器或其他客户端程序)选择要上传的文件后,将数据通过 HTTP 协议的 POST 请求发送到 Web 服务器。Web 服务器收到请求后,将文件保存到指定的路径中。

实现烧瓶上传的代码示例
from flask import Flask, request, jsonify, send_file
import os

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return jsonify({'error': 'No file found'})

    file = request.files['file']

    if file.filename == '':
        return jsonify({'error': 'No file name found'})

    file.save(file.filename)

    return jsonify({'success': 'File uploaded'})

@app.route('/download', methods=['GET'])
def download():
    if not os.path.exists('file.txt'):
        return jsonify({'error': 'File not found'})

    return send_file('file.txt', as_attachment=True)

if __name__ == '__main__':
    app.run(debug=True)
代码说明
  1. 导入 Flask 和其他依赖的模块。

  2. 创建一个 Flask 应用实例。

  3. 定义一个 '/upload' 路由,当客户端发送一个 POST 请求时,执行 upload 函数。此函数首先检查上传的文件是否存在,如果存在则保存到服务器中,最后返回一个成功的消息。

  4. 定义一个 '/download' 路由,当客户端发送一个 GET 请求时,执行 download 函数。此函数首先检查要下载的文件是否存在,如果存在则以附件的形式下载该文件。

  5. 启动应用程序。

注意事项
  1. 程序中的 upload 函数将文件保存到与代码文件相同的目录中,可以根据需要修改保存路径。

  2. 代码示例中默认上传的文件名为 'file',可以根据实际应用需要修改文件名。

Markdown
代码
```python
from flask import Flask, request, jsonify, send_file
import os

app = Flask(__name__)

@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return jsonify({'error': 'No file found'})

    file = request.files['file']

    if file.filename == '':
        return jsonify({'error': 'No file name found'})

    file.save(file.filename)

    return jsonify({'success': 'File uploaded'})

@app.route('/download', methods=['GET'])
def download():
    if not os.path.exists('file.txt'):
        return jsonify({'error': 'File not found'})

    return send_file('file.txt', as_attachment=True)

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

从客户端上传文件到服务器上并从服务器上下载文件。