Wenn ich die Frage javascript
Dateien auf dem Server auflisten kann, antwortete jeder mit "javascript
kann nicht auf Server-Dateisystem zugreifen, weil es ein client-side scripting language
ist". Aber ich dachte, dass die Antwort nur teilweise wahr ist, weil der Browser den Inhalt des Serververzeichnisses auflisten kann, wenn dirlisting
aktiviert ist. Also, ich entschied mich zu versuchen, diese Ausgabe zu analysieren - keine Notwendigkeit, cgi
zu verwenden, wenn Sie bereits die Daten sehen können, die Sie in xml
Format benötigen. Also hier ist das, was ich getan habe:List Server-Verzeichnis mit JavaScript XHR
ich lighttpd
benutze und wichtige Einträge in lighttpd.conf
sind:
dir-listing.activate = "enable" #enables directory listing
dir-listing.auto-layout = "disable" #simplifies the list style
mimetype.assign = (".xml" => "text/xml") #deals with xmls
test.xml
verwendet XHR
zu testen, sieht wie folgt aus:
<?xml version="1.0"?>
<anchors>
<a>foo</a>
<a>bar</a>
</anchors>
Verzeichnisliste Seite, erstellt von lighttpd
mod_dirlisting.so
:
<?xml version="1.0" encoding="iso-8859-1"?>
<h2>Index of /directory/</h2>
<div class="list">
<table summary="Directory Listing" cellpadding="0" cellspacing="0">
<thead><tr><th class="n">Name</th><th class="m">Last Modified</th><th class="s">Size</th><th class="t">Type</th></tr></thead>
<tbody>
<tr><td class="n"><a href="../">Parent Directory</a>/</td><td class="m"> </td><td class="s">- </td><td class="t">Directory</td></tr>
<tr><td class="n"><a href="foo">foo</a></td><td class="m">2015-Jan-03 13:24:12</td><td class="s">39.4K</td><td class="t">application/octet-stream</td></tr>
</tbody>
</table>
</div>
test.html
Seite verwendet XHR
zu erstellen:
<html><head></head><body><script>
if (window.XMLHttpRequest) var request = new XMLHttpRequest();
else var request = new ActiveXObject('Microsoft.XMLHTTP');
request.open('post', 'test.xml', true);
request.send();
if (request) request.onreadystatechange = function() alert(request.responseXML.getElementsByTagName('a')[1].childNodes[0].nodeValue);
</script></body></html>
All das gut funktionieren (Sie in einem Warnfeld ‚foo‘ bekommen), aber wenn ich request.open
Verzeichnis statt xml
, bekomme ich nichts, nicht einmal in Fehlerkonsole.
'request.readyState' zur Abkürzung des Beispielcode weggelassen wurde, und' xml' Datei 'mod_dirlisting.so' Servermodul erzeugt wurde, so kann ich seine halb fehlerhafte Ausgabe nicht manipulieren (' & nbsp' etc) in irgendeiner Weise, aber ich kann wählen, um es zu umgehen, indem Sie die Ausgabe mit 'request.responseType = 'Dokument', die eigentlich die direkte Antwort auf mein Problem war. Vielen Dank. – Ulrik