Python 将图像从数据存储读取到<;img>;标签

Python 将图像从数据存储读取到<;img>;标签,python,google-app-engine,google-cloud-datastore,image-uploading,app-engine-ndb,Python,Google App Engine,Google Cloud Datastore,Image Uploading,App Engine Ndb,嗨,我正试图上传一个实体的图像,并将其放到另一个页面的图像标签中,但无法完成 将整个blob内容写入响应是可行的,但如果我试图将blob内容放入html页面中的标记中,则不可见 下面是代码。请帮忙 import webapp2 from google.appengine.ext import ndb import mimetypes import logging HTML_POST_PAGE = \ """ <!DOCTYPE HTML> <html lang="en"&g

嗨,我正试图上传一个实体的图像,并将其放到另一个页面的图像标签中,但无法完成

将整个blob内容写入响应是可行的,但如果我试图将blob内容放入html页面中的标记中,则不可见

下面是代码。请帮忙

import webapp2
from google.appengine.ext import ndb
import mimetypes
import logging


HTML_POST_PAGE = \
"""
<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Image Upload</title>
</head>
<body>
<form action="/file_upload" enctype="multipart/form-data" method="post">
    <div><input type="file" name="file"/></div>
    <div><input type="submit" value="Upload"></div>

</form>
</body>
</html>
"""


OUTPUT_HTML_PAGE = """
<!DOCTYPE HTML>
<html lang="en">
<head>
    <title>Image Upload</title>
</head>
<body>
<h1>Serving image dynamically.</h1>
<img src='/dyimg_serve?img_id=%s'></img>
</body>
</html>
"""

#Hardcoded value for Key name
email_id = "ryan@gmail.com"

#Updated Image Upload
class MyUser(ndb.Model):
    file_name = ndb.StringProperty()
    blob = ndb.BlobProperty()


class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.write(HTML_POST_PAGE)

#Handler for image upload
class FileUpload(webapp2.RequestHandler):
    def post(self):
            #Creating entity with fixed id
            my_user = MyUser(id=email_id)

            #Below lines to be added in the main code to put image in datastore
            file_upload = self.request.POST.get("file", None)
            file_name = file_upload.filename
            my_user.file_name = file_name
            my_user.blob = file_upload.file.read()
            userKey = my_user.put()

            #Navigating to other page to read image
            self.response.out.write(OUTPUT_HTML_PAGE)


#Handler to read image into the <img> tag in the OUTPUT_HTML_PAGE 
class DynamicImageServe(webapp2.RequestHandler):
    def get(self):
        oldUser = MyUser.get_by_id(email_id)
        if oldUser != None and oldUser.blob != None:
##            self.response.headers['Content-Type'] = 'image/png'
            self.response.headers[b'Content-Type'] = mimetypes.guess_type(oldUser.file_name)[0]
            self.response.write(oldUser.blob)
        else:
            self.response.write('Error while fetching image data')


application = webapp2.WSGIApplication([('/',MainPage ),('/file_upload',FileUpload),('/dyimg_serve',DynamicImageServe),], debug=True)         
导入webapp2
从google.appengine.ext导入ndb
导入模拟类型
导入日志记录
HTML\u发布页面=\
"""
图像上传
"""
输出\u HTML\u页面=”“
图像上传
动态服务图像。
"""
#键名称的硬编码值
电子邮件_id=”ryan@gmail.com"
#更新图像上传
类MyUser(ndb.Model):
文件名=ndb.StringProperty()
blob=ndb.BlobProperty()
类主页(webapp2.RequestHandler):
def get(自我):
self.response.write(HTML\u POST\u页面)
#图像上传处理程序
类文件上载(webapp2.RequestHandler):
def post(自我):
#创建具有固定id的实体
我的用户=我的用户(id=电子邮件id)
#在主代码中添加以下行以将图像放入数据存储
file\u upload=self.request.POST.get(“文件”,无)
file\u name=file\u upload.filename
my_user.file_name=文件名
my_user.blob=file_upload.file.read()
userKey=my_user.put()
#导航到其他页面以读取图像
self.response.out.write(输出页面)
#处理程序将图像读入输出页面中的标记中
类DynamicImage服务(webapp2.RequestHandler):
def get(自我):
oldUser=MyUser.get\u by\u id(email\u id)
如果是oldUser!=None和oldUser.blob!=无:
##self.response.headers['Content-Type']='image/png'
self.response.headers[b'Content-Type']=mimetypes.guess\u类型(oldUser.file\u名称)[0]
self.response.write(oldUser.blob)
其他:
self.response.write('获取图像数据时出错')
application=webapp2.WSGIApplication([('/',主页),('/file\u upload',FileUpload),('/dyimg\u serve',dynamicmageserve),],debug=True)

您没有在输出页面上设置img标签的src属性

<img src="/dyimg_serve"></img>


在修复img标记后,相同的代码在my appengine实例上正常工作。代码:[链接]谢谢,它也在运行。