Je souhaite que toutes les URL commencent par "/ files".Twisted non par défaut racine HTTP
La page racine située à "localhost: 3000/files" renverra une liste de dossiers spécifiques qui seront partagés. Le partage par défaut ne me laisse pas limiter les dossiers à partager.
Je souhaite afficher tous les fichiers du dossier lors de la navigation dans un dossier. Avec l'URL comme "localhost: 3000/files/Documents".
Je souhaite partager les dossiers et fichiers spécifiques dans les dossiers de manière récursive. Avec l'URL comme "localhost: 3000/files/Documents/Filename.pdf".
from twisted.web.server import Site from twisted.web.resource import Resource from twisted.web.static import File from twisted.internet import reactor folder_list = ["Documents", "Downloads"] class RootPage(Resource): isLeaf = True def render_GET(self, request): print request.uri new_request = request.uri[7:] if len(new_request) <= 3: ret = "" for folders in folder_list: ret += "<a href='%s'>%s</a></br>" % ("/files/" + folders.replace(" ", "-") , folders) return ret root = Resource() #folders root.putChild('files', RootPage()) for folders in folder_list: root.putChild(folders.replace(" ", "-"), File("/home/user1/" + folders)) factory = Site(root) reactor.listenTCP(3000, factory) reactor.run()
2
A
Répondre
2
Problèmes
1) Dans l'appel .putChild()
, vous établissez vos URL de dossier que les enfants de la racine, et non pas les enfants de /files
.
2) Dans la définition de classe RootPage
, vous définissez isLeaf
à True
. Mais vous créez un noeud intérieur, pas un noeud feuille.
Solution
Supprimer la ligne isLeaf
, et changer les autres lignes concernées à ceci:
root = Resource()
rootpage = RootPage()
#folders
root.putChild('files', rootpage)
for folders in folder_list:
rootpage.putChild(folders.replace(" ", "-"), File("/home/user1/" + folders))
factory = Site(root)
Fonctionne parfaitement grâce. – GeneralZero