2017-05-23 2 views
0

PythonのピラミッドプロジェクトをPython 2から3に移動しています.PDFファイルを生成するためにReportLabを使用していました。彼らの例によると、以前はStringIO()だったときにio.BytesIO()を使う必要があります。Content-LengthからBytesIOまでの長さの場合のHPE_UNEXPECTED_CONTENT_LENGTHエラー

生成されたドキュメントの長さを使用してContent-Lengthを私の応答に設定すると、HPE_UNEXPECTED_CONTENT_LENGTHエラーが発生します。私は設定しない場合

pdf = io.BytesIO() 
doc = SimpleDocTemplate(pdf) 
doc.build(story) 
pdfcontent = pdf.getvalue() 
pdf.close() 

response = Response(content_type='application/pdf', body=pdfcontent) 
response.headers.add("Content-Length", str(len(pdfcontent))) 

Content-Lengthは、ダウンロードが正常に動作属性が、私はむしろ、空白のままではないでしょう。

答えて

1

具体的な例とエラーについてはわかりませんが、このような応答bodyバイトを入力すると、ピラミッドはContent-Lengthヘッダーを送信します。手動で設定する必要はありません。すでにバイトがあり、そのサイズが分かります。

ブラウザのデベロッパーツールやcurlやhttpieなどのコマンドラインツールを使用して、応答ヘッダーを確認する必要があります。

+0

あなたは何を知っていますか?自動的に設定されます。 – Niel

関連する問題