2017-05-23 9 views
0

파이썬 피라미드 프로젝트를 파이썬 2에서 3으로 옮깁니다. ReportLab을 사용하여 PDF 파일을 생성하고 프런트 엔드로 보냈습니다. 그들의 예에 따르면, 이전에 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