The one thing that looked off to me is that the line in ServePhoto
photo = db.get(self.request.get("photo_id"))
might want to be
photo = Photo.get(self.request.get("photo_id"))
I think db.get is a datastore method, not an inherited method from
db.Model
On Sep 13, 8:09 pm, Robert Kluin <[email protected]> wrote:
> I glanced over your code, nothing really major jumped out at me. If
> you are not getting an exception in ServePhoto then the model is
> clearly getting created and successfully fetched.
>
> So, here are my first thoughts:
> Have you tried logging some debug info in the UploadPhoto and
> ServePhoto handlers? Specifically are you sure data is actually in
> the photo property and it is not just an empty string or something?
> Maybe you could try logging len(photo.photo) right before saving it,
> then again right after fetching it.
>
> What happens when you remove the if and simply return photo.photo?
>
> Robert
>
> class ServePhoto (webapp.RequestHandler):
> def get(self):
> photo = db.get(self.request.get("photo_id"))
> if photo.photo:
> self.response.headers['Content-Type'] = "image/jpg"
> self.response.out.write(photo.photo)
> else:
> self.error(404)
>
> ------
> Robert Kluin
> Ezox Systems, LLC
>
> On Sun, Sep 12, 2010 at 22:03, Raymond
>
>
>
> <[email protected]> wrote:
> > Hi All,
>
> > I have been trying to understand how to upload and download images
> > from to a Blobstore and have hit a wall.
> > I have essentially made a modified version of the Guestbook example
> > provided by google and modified it to suit my needs, I have tested the
> > guestbook app as is and got it working, somehow somewhere I am making
> > a simple mistake that frustrate every attempt at getting it working in
> > my own code.
> > I have stripped down my code to the essential in the hope of
> > understanding what is wrong, but I am still stuck.
>
> > What am I attempting to do ?
> > Upload in a blobstore an image and display it in a web page.
>
> > What is my code ?
>
> > 1) My upload form served from a static page
>
> > ...
> > <form action="http://192.168.0.196:8083/uploadphoto"
> > enctype="multipart/form-data" method="post">
> > <div><label>Attempt at uploading a picture using a form</label></
> > deiv>
> > <div><input type="file" name="photo" /></div>
> > <div><input type="submit" value="Upload Photo" /></div>
> > </form>
> > ...
>
> > 2) My db model :
>
> > class Photo(db.Model):
> > photo = db.BlobProperty()
> > date = db.DateTimeProperty(auto_now_add=True)
>
> > 3) The code uploading the photo and saving it in the blobstore
>
> > class UploadPhoto(webapp.RequestHandler):
> > def post(self):
> > photo = Photo()
> > img = self.request.get('photo')
> > photo.photo = db.Blob(img)
> > photo.put()
>
> > 4) The code creating the web page displaying the images :
>
> > class PhotoPage(webapp.RequestHandler):
> > def get(self):
> > self.response.out.write('<html><pre>')
> > self.response.out.write('<h1>Date&Time Photo</h1>')
> > photos = db.GqlQuery("SELECT * FROM Photo ORDER BY date DESC
> > LIMIT
> > 10")
> > for photo in photos:
> > self.response.out.write('<p>%s ' % photo.date)
> > self.response.out.write('<img
> > src="servephoto?photo_id=%s" /></p>'
> > % photo.key())
> > self.response.out.write('</pre></body></html>')
>
> > 5) The code serving the images :
>
> > class ServePhoto (webapp.RequestHandler):
> > def get(self):
> > photo = db.get(self.request.get("photo_id"))
> > if photo.photo:
> > self.response.headers['Content-Type'] = "image/jpg"
> > self.response.out.write(photo.photo)
> > else:
> > self.error(404)
>
> > Everything seem to work until this last stage, I can select an image
> > in my form, upload it, Something is written in Binary in the
> > Blobstore.
> > When I visit the page supposed to display the image I see all info but
> > a broken image icon.
> > I checked the source code and the HTML seem to be just fine, here it
> > is with one record in the blobstore, I get the blob key which mena
> > that there is a record with some binary stuff in it.
>
> > <html><pre><h1>Date&Time Photo</h1><p>2010-09-13 00:31:14.477698 <img
> > src="servephoto?photo_id=agt0ZXN0cmF5c3Bvc3ILCxIFUGhvdG8YWww" /></p></
> > pre></body></html>
>
> > I also know that the ServePhoto class is called and executed but it if
> > photo.photo always return false and execute self-eror(404).
> > I tried replacing this with a different error code and it always
> > display the error code so I am sure the if statement get a false.
>
> > My questions is, why would the if statement get a false if there is
> > effectively an image in the blobstore (Proved by the fact that I can
> > retrieve it's key) ?
>
> > I am sorry for the long post, and hope I am not too confusing.
>
> > Thanks for any hint that would get me on the right way and forgive me
> > if the answer is obvious, I probably need new eyes.
>
> > Raymond
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group
> > athttp://groups.google.com/group/google-appengine?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine?hl=en.