Загрузка изображений вместе с Google App Engine - PullRequest
7 голосов
/ 02 октября 2008

Я работаю над проектом Google App Engine.

Мое приложение работает и выглядит локально правильно, но когда я пытаюсь загрузить изображения в каталог изображений, они не отображаются в appspot.

В качестве небольшой проблемы я поместил HTML-страницу в "/images/page2.html" и могу загрузить эту страницу в appspot, но мои страницы не отображают мои изображения. Так что это не проблема с моим путем.

В качестве еще одной проверки работоспособности я также загружаю каталог таблиц стилей с кодом .css, который читается правильно.

У меня есть подозрение, что проблема заключается в моем файле app.yaml.

Есть идеи?

Я не хочу вставлять весь код здесь, но вот некоторые из ключевых строк. Первые два работают нормально. Третий не работает:

<link type="text/css" rel="stylesheet" href="/stylesheets/style.css" />
<a href="/images/Page2.html">Page 2</a>
<img src="/images/img.gif">

Это мой файл app.yaml

application: myApp
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /images
  static_dir: images

- url: /.*
  script: helloworld.py

Ответы [ 5 ]

4 голосов
/ 09 ноября 2008

Вам необходимо настроить app.yaml для статического содержимого, такого как изображения и CSS-файлы

Пример:

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

Для получения дополнительной информации проверьте: http://code.google.com/appengine/docs/configuringanapp.html

2 голосов
/ 03 октября 2008

Бьюсь об заклад, ваша проблема в том, что вы используете Windows.

Если это так, я полагаю, вам нужен предшествующий слеш для значения static_dir.

1 голос
/ 20 июня 2009

Я использую версию Java App Engine, и у меня возникли аналогичные проблемы с сервером, который не может обслуживать статические изображения.

В конечном итоге сработало изменение файла конфигурации AppEngine «appengine-web.xml», чтобы он содержал

<static-files>
<include path="**.*"/>
    <include path="/images/**.*" />
</static-files>

Мои изображения находятся в каталоге / images, а HTML и CSS - в. каталог, который находится на уровне WEB-INF

0 голосов
/ 17 октября 2008
<img src="/images/img.gif">

эта строка не может показать вам изображение. Попробуйте это:

1-Создать класс для обработки "запроса изображения"

class GetImage(webapp.RequestHandler):
      def get(self):
       self.response.headers['Content-Type'] = 'image/jpg'
       self.response.out.write(image_object)

2-На вашей страничке.html:

<img src="/image"

3-У главной функции в вашем code.py:

application = webapp.WSGIApplication(('/image', GetImage), debug=True)

веселись

0 голосов
/ 08 октября 2008

@ jamtoday Предыдущая косая черта не имела значения, но она заставила меня начать выяснять, что нужно сказать каждому приложению о структуре моего каталога.

Итак, мне нечего добавить, но я хотел продолжить, потому что у меня все получилось, но я не стал изучать все проблемы после того, как все заработало.

Одним из изменений, которое помогло, было прекращение работы из каталога HwlloWorld / src / и начало работы в каталоге HelloWorld /. Похоже, что dev_appserver обнаружил все зависимости, а удаленный сервер - нет. По сути, относительный путь моих локальных ссылок не совпадает с относительным путем ссылок после загрузки.

Я также понял, что dev-appserver использует файл .yaml, а также скрипт appcfg. То есть. , Если вы добавляете каталог в свой проект и затем пытаетесь связать файлы с этим каталогом, вам нужно добавить каталог в файл .yaml, а затем перезапустить dev-appserver, чтобы продолжить.

Итак, вероятно, есть способы справиться с тем, что я изначально пытался сделать, если вы дадите файлу .yaml правильную информацию, но переход на другую структуру каталогов локально обработал это для меня.

...