关于StackOverflow的第一个问题。 。
在使用python的Google App Engine应用程序中,我试图在页面上与html一起显示一个小的pdf图像。
我有一个小班,写得像这样:
class modelReport(db.Model):
Applicant = db.StringProperty()
Reportblob = db.BlobProperty()
小表单用于上传图像并将图像提交给以下处理程序:
class UploadResults(webapp.RequestHandler):
def post(self):
m = modelReport()
m.Applicant = self.request.get("txtApplicantName")
Reportblob = self.request.get("file")
m.Reportblob = db.Blob(Reportblob)
m.put()
我正在使用以下代码显示申请人的图片和名称:
class RetrieveResults(webapp.RequestHandler):
def get(self):
self.response.out.write('''
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="em">
<head>
<meta http-equiv="Content-Type" content="application/pdf" />
<title>Results Page</title>
</head>
<body>
''')
reports = db.GqlQuery('SELECT * FROM modelReport')
for report in reports:
self.response.out.write('</p><b>%s</b> report is:' % report.Applicant)
self.response.out.write("<div><img src='img?img_id=%s'></img>" % report.key())
self.response.out.write('''
</body></html>
''')
使用开发服务器Datastore Viewer时,我可以看到列出Key,Write Ops,ID,Key Name,Applicant和Reportblob的新'modelReport'实体。
问题是输出列出申请人,然后显示一个带有“?”的小蓝框在中间,它找不到图像文件。 。 。并且,开发服务器日志控制台显示404错误:
INFO..."GET /retrieve_results/all_results HTTP/1.1" 200 -
INFO..."GET /retrieve_results/img?img_id=ag...Aww HTTP/1.1" 404 -
INFO..."GET /retrieve_results/img?img_id=ag...BQw HTTP/1.1" 404 -
INFO..."GET /retrieve_results/img?img_id=ag...Bgw HTTP/1.1" 404 -
我想了一段时间我可能会使用错误的“内容类型”标题,但使用Apache Web服务器的类似代码显示文本和图像就好了。
好像我可能会制作空的blobstore属性“Reportblob”,但我不知道如何验证或调试。
非常感谢任何或所有帮助修复GAE代码。
答案 0 :(得分:2)
首先犯了几个错误:
您的HTML页面不是PDF文档,因此您无法将其内容类型声明为pdf:
<meta http-equiv="Content-Type" content="application/pdf" />
相反它应该像
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
PDF文档不是图片,您不能只将src
指向PDF文档Url并期望它显示:
<div><img src='img?img_id=%s'></img>
只是检查:我假设您/img?img_id=<..>
有{{1}}处理程序?
您需要做什么:
确保正确提供blob,如上面第3点的链接所述。
查看有关如何将PDF文档正确嵌入HTML页面的所有选项:serve images from blobstore(最简单的是Recommended way to embed PDF in HTML?)