欢迎访问宙启技术站
智能推送

Werkzeug测试:使用Python进行文件上传和下载的测试

发布时间:2023-12-11 06:28:51

Werkzeug是一个Python的WSGI(Web服务网关接口)工具库,可用于构建Web应用程序。它提供了一些方便的功能,可以很容易地实现文件上传和下载。下面是一个使用Werkzeug进行文件上传和下载的示例。

首先我们需要安装Werkzeug库。可以使用pip来安装:

pip install Werkzeug

接下来我们将创建一个简单的Web应用程序,用于文件上传和下载。我们需要导入Werkzeug的相关模块:

from flask import Flask, send_from_directory, request
from werkzeug.utils import secure_filename

然后创建一个Flask应用程序:

app = Flask(__name__)

在应用程序中,我们需要指定一个文件上传目录。使用UPLOAD_FOLDER变量来指定上传目录的路径:

import os

UPLOAD_FOLDER = '/path/to/upload/directory'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

上传文件的功能可以通过定义一个路由来实现。使用POST方法访问该路由,并使用request.files获取上传的文件对象:

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    if file:
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return '文件上传成功'
    return '文件上传失败'

在该路由中,我们首先从请求中获取上传的文件对象。然后使用secure_filename函数来确保文件名的安全性,将文件保存到指定的上传目录下。最后返回上传成功的提示信息。

下载文件的功能可以通过定义另一个路由来实现。使用send_from_directory函数来发送文件:

@app.route('/download/<filename>')
def download(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

在该路由中,我们接收传递的文件名参数,并使用send_from_directory函数来发送该文件。

最后,我们需要运行这个应用程序:

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

整个应用程序的代码如下:

from flask import Flask, send_from_directory, request
from werkzeug.utils import secure_filename

app = Flask(__name__)

import os

UPLOAD_FOLDER = '/path/to/upload/directory'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

@app.route('/upload', methods=['POST'])
def upload():
    file = request.files['file']
    if file:
        filename = secure_filename(file.filename)
        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        return '文件上传成功'
    return '文件上传失败'

@app.route('/download/<filename>')
def download(filename):
    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

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

以上是使用Werkzeug进行文件上传和下载的简单示例。你可以根据自己的需求对代码进行修改和扩展。希望这可以帮助到你!