Загрузка изображений вместе с Google App Engine

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

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

В качестве небольшого устранения неполадок я помещаю 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

person Baltimark    schedule 02.10.2008    source источник
comment
Привет, ты решил свою проблему? Не поделитесь, как вы ее решаете?   -  person Sam YC    schedule 14.11.2012


Ответы (5)


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

Пример:

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

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

person Sarp Centel    schedule 09.11.2008

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

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

person jamtoday    schedule 03.10.2008
comment
Вот это интересно — я только что устроился на работу, а теперь хочу пойти домой, чтобы попробовать это. Я вернусь (но это может быть в понедельник) с обновлением. Кстати, есть ли документация о том, о чем вы говорите, которую я мог где-то упустить? - person Baltimark; 03.10.2008

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

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

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

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

person Community    schedule 20.06.2009

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

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

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

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

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

person Baltimark    schedule 08.10.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-В основной функции в вашем коде.py:

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

развлекайся

person Community    schedule 17.10.2008
comment
Твоя 2 написана полностью или ее обрезали? Похоже, вы пытаетесь создать общий класс GetImage, но где вы указываете фактическое изображение? Что делать, если я хочу отобразить image1.jpg в одном месте и image2.jpg в другом. Что такое html-вызовы? - person Baltimark; 20.10.2008