【发布时间】:2015-02-03 16:58:35
【问题描述】:
我正在尝试从 HTTP POST 到 Flask (v0.10) 接收 gzip 压缩的 JSON 文件。我觉得在尝试打开 gzip 之前可能会发布一些额外的数据需要删除。
这是我的代码:
from flask import Flask, jsonify, request, abort
import gzip, StringIO
app = Flask(__name__)
# Handle posted data
@app.route('/', methods = ['POST'])
def post_gzip():
# Check for a supported media type
if (request.headers['Content-Type'] == 'application/x-gzip'):
file = request.data
f = gzip.open(file, 'rb')
return f;
else:
# 415 Unsupported Media Type
abort(415)
if __name__ == "__main__":
app.debug = True
app.run()
我正在使用 cURL 将压缩的 JSON 文件发布到 Flask,如下所示:
curl -X POST -d @test.json.gz http://127.0.0.1:5000/ -H "Content-Type:application/x-gzip" -H "Content-Encoding:gzip"
我收到的错误是:
UnicodeDecodeError: 'utf8' codec can't decode byte 0x8b in position 1: invalid start byte
Flask 似乎无法将接收到的数据视为 gz 文件。也许 request.data 甚至不是正确的使用方法。
有好心人能给我指出这个正确的方向吗?
【问题讨论】: