【发布时间】:2020-05-29 10:27:45
【问题描述】:
在我们的烧瓶 API 中,我们有一个用于上传文档的端点。此端点接收上传的文档,进行一些检查并将此文档上传到 MinIO。 我们希望将接收到的文档直接流式传输到远程存储,而不是通过 API 实际处理它。
一个想法是执行以下操作:
@app.route('/upload', methods=['POST'])
def upload():
upload_url = get_presigned_upload_url()
response = requests.put(url=upload_url, files={'file': request.stream})
在上面的代码中我可以看到两个问题:
1- 如何确保流仅包含一个文件
2- 如何从实际文件中提取 mimetype,而不只是信任文件扩展名
【问题讨论】:
-
如果我的理解错了,请纠正我,但是当前 /upload url 接收文件,在 do_something() 中对文件进行一些处理,然后生成要上传到 MinIo 的 url .您只想上传文件,它将直接流式传输到 min_io 而不被 do_something() 处理?
-
不,它不会触及文件本身。可以说它进行了一些安全检查。你评论的第二部分正是我想要实现的目标
-
我删除了 do_something() 部分,因为我可能会感到困惑。
-
您似乎走在了正确的道路上。关于您的观点 (1) 和 (2) ,对于 (1) 您可以限制您的烧瓶 api 路由不接受请求标头中的“multipart/form-data”。对于(2)看看下面的答案stackoverflow.com/questions/481743/…
-
hmm 但我希望此上传端点接收文件。禁用 multipart/form-data 后如何接收此文件?
标签: python flask streaming minio