i have this small problem with google app engine i want to retrieve images from datastore , my function is 100 percent working if i enter the key inside the code on the other hand if i get as a parameter it would give me BadKeyError
here is the form
{% for image in image.all %}
<li>{{ image.title }} </li>
<img src='getImage?key={{image.key}}' height="100" />
maped to
def getImage(request,key):
image = Image()
request.encoding = 'koi8-r'
image = db.get(key)
#build your response
response = HttpResponse(image.blob)
# set the content type to png because that's what the Google images api
# stores modified images as by default
response['Content-Type'] = 'image/png'
# set some reasonable cache headers unless you want the image pulled on every request
response['Cache-Control'] = 'max-age=7200'
return response
I created something simliar to what you want to achieve.. Hope this helps
image.py
import os
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext.webapp.util import run_wsgi_app
class Profile(db.Model):
image=db.BlobProperty()
class disp_image(webapp.RequestHandler):
def get(self):
key = self.request.get('key')
image = Profile.get(key)
self.response.headers['Content-Type'] = "image/png"
return self.response.out.write(image.image)
class MainPage(webapp.RequestHandler):
def get(self):
image = self.request.get('image')
pro=Profile()
if image:
pro.image = db.Blob(image)
import logging
logging.info('persisted')
pro.put()
prof=Profile().all()
return self.response.out.write(template.render('view.html',{'prof':prof}))
def post(self):
return MainPage.get(self)
application = webapp.WSGIApplication([
('/', MainPage),
('/disp', disp_image)
], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
view.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/">
<input type="file" name='image'/>
<input type='submit' value="submit"/>
{% for prof in prof %}
<img src="/disp?key={{prof.key}}" />
{% endfor %}
</form>
</body>
</html>
app.yaml
application: sample-app
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
script: image.py
url
>>> req.host
'localhost:80'
>>> req.host_url
'http://localhost'
>>> req.application_url
'http://localhost/blog'
>>> req.path_url
'http://localhost/blog/article'
>>> req.url
'http://localhost/blog/article?id=1'
>>> req.path
'/blog/article'
>>> req.path_qs
'/blog/article?id=1'
>>> req.query_string
'id=1'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.