我可以在Flask中提供多部分http响应吗?

时间:2014-10-30 01:03:29

标签: python curl flask multipart

我想做一个类似于表单可以为文件上传产生的多部分http请求的多部分http响应。它将包含多个数据段,每个数据段都有自己的内容类型。当我谷歌这个时,我找到的只是information on streaming

我不在乎浏览器是否支持此功能,因为它适用于使用libcurl的客户端。但是,我不确定libcurl是否支持多部分响应。可以?多部分回复是你可以做的吗?

3 个答案:

答案 0 :(得分:4)

在其他答案的基础上,使用requests toolbelt库,代码如下所示:

from flask import Flask, Response
from requests_toolbelt import MultipartEncoder

app = Flask(__name__)

@app.route('/downloads')
def downloads():
    m = MultipartEncoder(
           fields={'field0': 'value', 'field1': 'value',
                   'field2': ('filename', open('file.py', 'rb'), 'text/plain')}
        )
    return Response(m.to_string(), mimetype=m.content_type)

答案 1 :(得分:1)

你似乎至少要问两件不同的事情。我将回答您标题中的问题:Flask可以发送多部分回复吗? (如果您需要知道libcurl是否/如何支持多部分响应,请尝试查看或查询单独的问题。)

当然可以。即使没有Flask扩展自动化它(我还没有搜索到是否有),没有什么可以阻止你,例如,使用email包中的{{3}}包。 stdlib手动生成MIME信封,然后使用适当的Content-Type提供它。

答案 2 :(得分:0)

所以,我今天正在研究类似的东西。这是一个老问题。但是,所以你没有搜索 - 简单的答案是从电子邮件包创建一个Multipart mime实体。并返回。 Flask将正确处理输出。

  

responseBody = MIMEMultipart()...

     

响应(responseBody.as_string())