2016-11-27 7 views
2
  1. Поэтому я хочу, чтобы все URL-адреса начинались с "/ files".Закрученный корнем не по умолчанию HTTP

  2. Корневая страница, расположенная на «localhost: 3000/files», вернет список конкретных папок, которые будут совместно использоваться. Доля по умолчанию не позволяет мне ограничивать, какие папки для обмена.

  3. Я хочу показать все файлы в папке при навигации к папке. С URL-адресом, как «localhost: 3000/files/Documents».

  4. Я хочу рекурсивно разделить конкретные папки и файлы в папках. С URL-адресом, например «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

Проблемы

1) В .putChild() вызова, вы устанавливаете свои адреса папки, как дети корня, а не дети /files.

2) В определении класса RootPage вы устанавливаете isLeaf на номер True. Но вы создаете внутренний узел, а не листовой узел.


Решение

Удалить isLeaf строку и изменить другие соответствующие строки к этому:

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

отлично работает спасибо. – GeneralZero