views:

52

answers:

2

I've got a tiny bit of code to display a file

in app.yaml

- url: /(.*\.(gif|png|jpg))
  static_files: static/\1
  upload: static/(.*\.(gif|png|jpg))

in main.py

...
class ShowImage(webapp.RequestHandler):
  def get(self):
      rootpath = os.path.dirname(__file__)
      file = rootpath + "/static/tracker.gif";
      fh=open(file, 'r')
      self.response.out.write(fh.read())
      fh.close 
...

I can see the files gone up by going to my *.appspot.com/tracker.gif (as per the app.yaml) But using *.appspot.com/showimage returns

Traceback (most recent call last):
  File "/base/python_lib/versions/1/google/appengine/ext/webapp/__init__.py", line 510, in __call__
    handler.get(*groups)
  File "/base/data/home/apps/APPNAME/2.341131266814384624/main.py", line 170, in get
    fh=open(file, 'r')
IOError: [Errno 2] No such file or directory: '/base/data/home/apps/APPNAME/2.341131266814384624/static/tracker.gif'
+3  A: 

Removed

- url: /(.*\.(gif|png|jpg))
  static_files: static/\1
  upload: static/(.*\.(gif|png|jpg))

from app.yaml apparently you cant serve content from folders you daftly marked as static

As from http://stackoverflow.com/questions/636665/deployment-of-static-directory-contents-to-google-app-engine

Chris M
+1  A: 

To spell out what Chris M. is referring to:

When deploying your application, any files matching an "upload" property for a "static_files" handler end up in a totally different place from your code and related files. As far as your code is concerned, they have been removed from the path you expect them to be at.

Greg Ball
Actually thats my answer; MSW was simply changing the formatting as i hadnt 'formatted' the code
Chris M
Mea culpa. Sorry Chris.
Greg Ball