2012-04-11 4 views
-2

Ich frage mich, wie ich das Handler hier großartiges Beispiel modifiziert könnte:Netty, aktualisieren Beispielcode HttpStaticFileServerHandler auch Verzeichnisliste zurückzukehren, wenn ein Verzeichnis-URL angegeben wird

https://github.com/netty/netty/blob/master/example/src/main/java/io/netty/example/http/file/HttpStaticFileServerHandler.java

bieten auch die Möglichkeit, eine Verzeichnisliste von Dateien zurückgeben? Derzeit wird es nur Dateien liefern, wenn der genaue Pfad und Name der Datei angegeben ist, ich möchte es so ändern, dass ich einen Basispfad angeben und eine Liste der Dateien auf dem Pfad erhalten konnte

Danke für irgendwelche Gedanken oder Ideen

+0

Die Verbindung ist jetzt tot, da Master nicht mehr existiert, aber wie ich unten beantwortet habe, ergibt die Frage keinen Sinn, wenn die Verbindung trotzdem aktualisiert wird. –

+3

Ich stimme für das Schließen dieser Frage als Off-Topic, weil es mit dem toten Link unklar ist. –

Antwort

2

Sie können versuchen, Folgendes in Zeile 126 einzufügen.

if (file.isDirectory()) { 
    String[] contents = file.list(); 
    StringBuilder sb = new StringBuilder(); 
    for (String name: contents) { 
     sb.Append(name); 
     sb.Append("\n"); 
    } 

    HttpResponse response = new DefaultHttpResponse(HTTP_1_1, OK); 
    response.setContent(ChannelBuffers.copiedBuffer(sb.toString(), CharsetUtil.UTF_8)); 
    response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); 

    if (isKeepAlive(request)) { 
     response.setHeader(CONTENT_LENGTH, response.getContent().readableBytes()); 
     response.setHeader(CONNECTION, HttpHeaders.Values.KEEP_ALIVE); 
    } 

    ChannelFuture future = e.getChannel().write(response); 
    if (!(isKeepAlive(request)) { 
     future.addListener(ChannelFutureListener.CLOSE); 
    } 

    return; 
} 

Vorsicht: Ich habe es oben von meinem Kopf eingegeben. Sie können einen Kompilierungsfehler oder zwei erhalten.

+0

Das funktioniert perfekt, danke Veebs! Ich habe nur ein paar Änderungen vorgenommen, um die Dateien mit HTML-Links zurückzugeben. – Hoofamon

0

Ich könnte mir vorstellen, dass Sie die Verzweigung ändern würden, die einen Fehler zurückgibt, wenn das Ziel keine "Datei" ist, um die Verzeichnisliste stattdessen als eine Art text/html-Datei zurückzugeben.

Verwandte Themen