Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask生成的PDF可以查看,但无法下载_Flask_Pythonanywhere - Fatal编程技术网

Flask生成的PDF可以查看,但无法下载

Flask生成的PDF可以查看,但无法下载,flask,pythonanywhere,Flask,Pythonanywhere,我最近开始学习flask,并创建了一个简单的webapp,它可以根据用户输入随机生成PDF格式的儿童数学工作表 PDF将在浏览器中自动打开并可以查看。但是,当我尝试在PC和Chrome iOS上下载时,会收到错误消息(Chrome PC:Failed-Network error/Chrome iOS:此时无法下载该文件) 您可以在这里试用:kidsmathsheets.com 我怀疑这与我生成和返回PDF文件的方式有关。仅供参考,我正在使用ReportLab生成PDF。下面是我的代码(托管在Py

我最近开始学习flask,并创建了一个简单的webapp,它可以根据用户输入随机生成PDF格式的儿童数学工作表

PDF将在浏览器中自动打开并可以查看。但是,当我尝试在PC和Chrome iOS上下载时,会收到错误消息(Chrome PC:Failed-Network error/Chrome iOS:此时无法下载该文件)

您可以在这里试用:
kidsmathsheets.com

我怀疑这与我生成和返回PDF文件的方式有关。仅供参考,我正在使用ReportLab生成PDF。下面是我的代码(托管在Pythonywhere上):


知道是什么导致了这个问题吗?非常感谢您的帮助

您尝试过使用吗?是的,我尝试过发送_file()并收到相同的错误消息…我相信这可能与Chrome安全设置有关:。我在Firefox中尝试了PDF下载,效果不错,但在Chrome(linux)中同样失败了。谢谢Glenn。我有一台windows计算机,它在Microsoft Edge上也出现故障。因此,我认为我交付PDF的方式有问题,这导致了此类错误。通常情况下,如果PDF可以显示,下载应该是直接的…现在Edge不是基于Chrome吗?
from reportlab.lib.pagesizes import A4, letter
from reportlab.pdfgen import canvas
from reportlab.platypus import Table
from flask import Flask, render_template, request, Response
import io
from werkzeug import FileWrapper

# Other code to take in input and generate data

    filename=io.BytesIO()

    if letter_size:
        c = canvas.Canvas(filename, pagesize=letter)
else:
    c = canvas.Canvas(filename, pagesize=A4)

pdf_all(c, p_set, answer=answers, letter=letter_size)
c.save()
filename.seek(0)
wrapped_file = FileWrapper(filename)

return Response(wrapped_file, mimetype="application/pdf", direct_passthrough=True)

else:
    return render_template('index.html')