我在StackOverflow上的第一个问题。 。 。如何使用Python从Google App Engine显示pdf blob
在使用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代码将不胜感激。
您没有使用Blob存储区,你只是存储内的一个blob实体。 – 2012-08-08 06:10:55
您应该发布/ retrieve_results处理程序代码。 – 2012-08-08 06:12:05
并欢迎堆栈溢出。 – 2012-08-08 06:12:33