Отправить pdf из pikepdf как поток BytesIO - несоответствие длины содержимого flask send_file
Я пытаюсь отправить pdf-файл в качестве ответа api с помощью flaks. Однако я получаю
ERR_CONTENT_LENGTH_MISMATCH
на стороне клиента API. Может быть, это вызвано тем, что поток не завершается, пока файл отправляется клиенту? Я не знаю
from flask import Flask, send_file, make_response
app = Flask(__name__)
@app.route("/")
def get_pdf(request):
# Set CORS headers for the preflight request
if request.method == 'OPTIONS':
# Allows GET requests from any origin with the Content-Type
# header and caches preflight response for an 3600s
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
pdf = Pdf.open('test.pdf')
file = io.BytesIO()
pdf.save(file)
response = make_response(send_file(file, download_name="project_pdf", mimetype='application/pdf', as_attachment=True))
response.headers.set('Access-Control-Allow-Origin', '*')
return response