Return multipart/formdata 包含 png 文件和 markdown 作为烧瓶响应
Return multipart/formdata containing png file and markdown as a flask response
您好,我正在尝试 return 从 get 请求的数据中分割。但是我无法 return a MultipartEncoder object 作为回应。我已经尝试过解决方案
下面的代码仅 return 是 'toPersonEmail' 字段。一个 return m 如何在 Flask 中作为响应?
@app.route("/multipart", methods=['GET'])
def send_multipart():
m = MultipartEncoder(fields={ 'markdown': "> Block quotes are written like so in markdown.",
'toPersonEmail':'d@d.com',
'files': ("pnggrad16rgb.png", open("pnggrad16rgb.png", 'rb'),
'image.png')})
return Response(m.fields, mimetype=m.content_type)
Flask 没有针对多部分 MIME 响应的具体规定; multipart/form 是一种 mimetype,通常仅在 POST 请求 到 服务器中使用,而不是在来自 HTTP 服务器的响应中使用。
如果您必须 return 有效的多部分 MIME 数据,请将 body 呈现为字节并在响应 object 上设置正确的 headers; `(
m = MultipartEncoder(fields={ 'markdown': "> Block quotes are written like so in markdown.",
'toPersonEmail':'d@d.com',
'files': ("pnggrad16rgb.png", open("pnggrad16rgb.png", 'rb'),
'image.png')})
return (m.to_string(), {'Content-Type': m.content_type})
如果您想 流式传输 响应,您必须提供自己的生成器函数,该函数以块的形式从多部分编码器读取:
def chunked_reader(f, chunksize=2 ** 20): # 1Mb chunks
while True:
chunk = f.read(chunksize)
if not chunk:
return
yield chunk
时使用它来包装您的 MultipartEncoder()
实例
# include the Content-Length header, even though we are streaming
return Response(
chunked_reader(m), content_type=m.content_type,
headers={'Content-Length': m.len})
MultipartEncoder()
object 支持 .read()
方法,就像文件一样。
您好,我正在尝试 return 从 get 请求的数据中分割。但是我无法 return a MultipartEncoder object 作为回应。我已经尝试过解决方案
下面的代码仅 return 是 'toPersonEmail' 字段。一个 return m 如何在 Flask 中作为响应?
@app.route("/multipart", methods=['GET'])
def send_multipart():
m = MultipartEncoder(fields={ 'markdown': "> Block quotes are written like so in markdown.",
'toPersonEmail':'d@d.com',
'files': ("pnggrad16rgb.png", open("pnggrad16rgb.png", 'rb'),
'image.png')})
return Response(m.fields, mimetype=m.content_type)
Flask 没有针对多部分 MIME 响应的具体规定; multipart/form 是一种 mimetype,通常仅在 POST 请求 到 服务器中使用,而不是在来自 HTTP 服务器的响应中使用。
如果您必须 return 有效的多部分 MIME 数据,请将 body 呈现为字节并在响应 object 上设置正确的 headers; `(
m = MultipartEncoder(fields={ 'markdown': "> Block quotes are written like so in markdown.",
'toPersonEmail':'d@d.com',
'files': ("pnggrad16rgb.png", open("pnggrad16rgb.png", 'rb'),
'image.png')})
return (m.to_string(), {'Content-Type': m.content_type})
如果您想 流式传输 响应,您必须提供自己的生成器函数,该函数以块的形式从多部分编码器读取:
def chunked_reader(f, chunksize=2 ** 20): # 1Mb chunks
while True:
chunk = f.read(chunksize)
if not chunk:
return
yield chunk
时使用它来包装您的 MultipartEncoder()
实例
# include the Content-Length header, even though we are streaming
return Response(
chunked_reader(m), content_type=m.content_type,
headers={'Content-Length': m.len})
MultipartEncoder()
object 支持 .read()
方法,就像文件一样。