python flask - 在不同 url 上提供文件

python flask - serve file on different url

我在 flask 中为 Order 个对象构建了一个带有 CRUD 的休息服务器。

因此 POST /order 有一个端点来创建 Order,然后用户可以在 POST /order/{order_id}/attachment

上上传附件

我也想提供附件,以便在同一个 url 上下载。 这样 GET /order/{order_id}/attachment 下载附件文件。

但是当我 return werkzeug.datastructures.FileStorage 设置了 filename 属性时,浏览器给我一个要保存的文件,名称为:attachment

有没有办法用 flask 发送文件,在不同的 url 上使用正确的文件名?

send_from_directory 方法可能会派上用场来提供文件。 示例(有点伪编码):

@app.route('/order/{order_id}/attachment')
def download_file(order_id):
    order = get_order_from_db(order_id)

    filename = order.attachment

    return send_from_directory(app.config['UPLOAD_FOLDER'], filename)

关于 send_from_directory 的更多信息:http://flask.pocoo.org/docs/0.12/api/#flask.send_from_directory