2016-11-27 2 views
2
  1. Je souhaite que toutes les URL commencent par "/ files".Twisted non par défaut racine HTTP

  2. 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.

  3. Je souhaite afficher tous les fichiers du dossier lors de la navigation dans un dossier. Avec l'URL comme "localhost: 3000/files/Documents".

  4. 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() 
    

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) 
+0

Fonctionne parfaitement grâce. – GeneralZero