Отправить 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

0 ответов

Другие вопросы по тегам