8
votes

Comment servir le fichier en weby?

J'utilise WebPy Framefork. Je veux servir un fichier statique sur l'une des demandes. Y a-t-il une méthode spéciale dans Webpy Framework ou il suffit de lire et de retourner ce fichier?


0 commentaires

4 Réponses :


11
votes

Si vous exécutez le serveur DEV (sans Apache):

Créer un répertoire (également appelé dossier) appelé static dans l'emplacement du script qui exécute le serveur Web.py. Placez ensuite les fichiers statiques que vous souhaitez servir dans le dossier statique.

Par exemple, l'URL http: //localhost/static/logo.png envoyer l'image ./static/logo.png au client.

Référence: http://weby.org/cookbook/staticfiles


mise à jour. Si vous avez vraiment besoin de servir un fichier statique sur / , vous pouvez simplement utiliser un redirection: xxx


2 commentaires

thats sert uniquement des fichiers dans / statique, je dois servir index.html sur demande avec chemin /


Cela ne fonctionne que si vous exécutez l'application Web.py directement à partir du dossier où elle est assise. Si vous voulez exécuter /path/to/my/web/app.py, vous n'avez pas de chance.



6
votes

J'ai lutté avec ceci depuis quelques heures ... Yuck!

Trouvé deux solutions qui travaillent tous deux pour moi ... 1 - En .htaccess Ajoutez cette ligne avant la ligne MODREWRITE: P>

urls = (
    '/' , 'index' ,
    '/add', 'add' ,
    '/(js|css|images)/(.*)', 'static', 
    '/one' , 'one'
    )

class static:
    def GET(self, media, file):
        try:
            f = open(media+'/'+file, 'r')
            return f.read()
        except:
            return '' # you can send an 404 error here if you want


6 commentaires

Avez-vous vu des avantages à ces méthodes sur webpy.org/cookbook/staticfiles ?


J'ai eu ceci pour travailler - je ne pouvais pas obtenir d'autres méthodes pour travailler, alors je suppose que c'est un avantage ;-) Je travaillais sur un compte d'hébergement partagé afin que cela ait été une partie de ma lutte.


+1 - Cela semble être la bonne solution lorsque vous souhaitez limiter l'accès aux fichiers que vous serez servir.


Tout comme un avertissement, cela permettra à quelqu'un de demander des URL comme: /Images/../../../../somefile_you_dont_want_anyone_to_seee


@Zachdwiel - merci! Super de savoir que j'ai laissé ce trou ouvert. Des pensées sur un bon moyen de le fermer?


La chose la plus sûre aurait le plus de chances de ne pas utiliser webpy pour cela, mais si vous devez, il semble que cela ressemble à ".." et leader "/" du média et du fichier serait un bon départ



1
votes

Je ne recommande pas de servir des fichiers statiques avec web.py. Vous feriez mieux d'avoir Apache ou Nginx configuré pour cela.


2 commentaires

Pourquoi pas? Il serait bénéfique de comprendre vos raisons.


Parce que ce sera lent



-1
votes

Les autres réponses n'ont pas fonctionné pour moi. Vous pouvez d'abord charger le fichier HTML dans App.py ou même écrire le HTML dans App.py. Ensuite, vous pouvez rendre la méthode de la classe d'index "Retourner le HTML statique.

index_html = '''<html>hello world!</html>'''

class index:
    def GET(self):
        return index_html


0 commentaires