2008-10-02 4 views
7

Je travaille sur un projet de moteur d'application google.Téléchargement d'images avec le moteur de l'application Google?

Mon application fonctionne et semble correcte localement, mais lorsque j'essaie de télécharger des images dans un répertoire d'images, elles ne sont pas affichées sur appspot. Comme un peu de dépannage, j'ai mis une page html dans "/images/page2.html" et je peux charger cette page sur appspot, mais mes pages n'affichent pas mes images. Donc, ce n'est pas un problème avec mon chemin. Comme autre vérification d'intégrité, je télécharge également un répertoire de feuilles de style avec du code .css, et cela est lu correctement.

J'ai un soupçon que le problème réside dans mon fichier yaml.

Des idées?

Je ne veux pas coller tout le code ici, mais voici quelques-unes des lignes clés. les deux premiers fonctionnent bien. le troisième ne fonctionne pas.

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

Ceci est mon fichier 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 
+0

Bonjour, avez-vous résolu votre problème? Esprit de partager comment vous le résoudre? – GMsoF

Répondre

2

Je parie que votre problème est que vous utilisez Windows.

Si c'est le cas, je crois que vous avez besoin d'une barre oblique pour votre valeur static_dir.

+0

Maintenant c'est intéressant - je viens juste de commencer à travailler, et maintenant je veux rentrer à la maison pour essayer ça. Je reviendrai (mais il se pourrait que ce soit lundi) avec une mise à jour. BTW, y a-t-il de la documentation sur ce dont vous parlez que j'ai peut-être oublié quelque part? – Baltimark

0

@jamtoday La barre oblique précédente n'a pas fait de différence, mais elle m'a permis de commencer à comprendre ce que chaque application doit savoir sur la structure de mon répertoire. Donc, je n'ai rien de très concluant à ajouter, mais je voulais faire un suivi, parce que je l'ai fait fonctionner, mais je n'ai pas exploré tous les problèmes après l'avoir fait fonctionner.

Une modification qui a aidé a été d'arrêter de travailler à partir d'un répertoire HwlloWorld/src/et de commencer à travailler dans le répertoire HelloWorld /. Il semble que dev_appserver a détecté toutes les dépendances, mais pas le serveur distant. Essentiellement, le chemin relatif de mes liens locaux ne correspond pas au chemin relatif des liens après le téléchargement.

J'ai également réalisé que le dev-appserver repose sur le fichier .yaml, ainsi que sur le script appcfg. C'est. . .si vous ajoutez un répertoire à votre projet, puis que vous essayez de lier des fichiers dans ce répertoire, vous devez ajouter le répertoire au fichier .yaml, puis redémarrer le dev-appserver pour le prendre en compte. Donc, il y a probablement des façons de gérer ce que j'essayais à l'origine si vous donniez au fichier .yaml les bonnes informations, mais en changeant de structure de répertoire différente, je l'ai géré pour moi.

0
<img src="/images/img.gif"> 

cette ligne ne peut pas afficher l'image. Essayez celui-ci:

1 Créer une classe pour gérer "demande d'image"

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

2-Dans votre page.html:

<img src="/image" 

3-A la fonction principale dans votre code.py:

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

have fun

+0

Votre "2" est-il entièrement écrit ou a-t-il été coupé? Il semble que vous essayez de créer une classe générale GetImage, mais où lui dites-vous l'image réelle? Que faire si je veux afficher "image1.jpg" dans un endroit, et "image2.jpg" dans l'autre. Quels sont les appels html? – Baltimark

1

J'utilise la version Java du moteur App, et j'ai fait face à des problèmes similaires avec le serveur incapable de servir des images statiques.

Ce qui a fonctionné en fin de compte était de modifier le fichier de configuration AppEngine « appengine-web.xml » dans mon cas contenir

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

Mes images sont dans le répertoire/images et HTML et CSS sont. répertoire qui est au niveau WEB-INF

Questions connexes