Dateisystem auslesen

Um einen Ordner auf dem Server aus zu lesen wird zwingend jQuery benötigt!

Wir benötigen auf dem Server, am besten im custom Ordner ein JSP File welches uns die vorhandene Dateien aus dem Server ausliest.

<%@ page
import="java.io.File,java.io.FilenameFilter,java.util.Arrays"%>
<%
String dir = request.getParameter("dir");
if (dir == null) {
return;
}
if (dir.charAt(dir.length()-1) == '\\') {
dir = dir.substring(0, dir.length()-1) + "/";
} else if (dir.charAt(dir.length()-1) != '/') {
dir += "/";
}
dir = java.net.URLDecoder.decode(dir, "UTF-8");
if (new File(dir).exists()) {
String[] files = new File(dir).list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.charAt(0) != '.';
}
});
Arrays.sort(files, String.CASE_INSENSITIVE_ORDER);
// get Files
for (String file : files) {
if (!new File(dir, file).isDirectory()) {
int dotIndex = file.lastIndexOf('.');
String ext = dotIndex > 0 ? file.substring(dotIndex + 1) : "";
out.print(file + ";");
}
}
}
%>

getFiles.jsp zum Download

Im Script brauchen wir nun einen Post-Aufruf welchem wir als Parameter den Pfad zum JSP File sowie den Ordnerpfad mitgeben!

$.post('getFiles.jsp',{
dir:'/Users/mkindler/dev/server/jboss-5.1.0.GA/server/default/deploy/loom.ear/loom-portal.war/custom/super/dokumente/'
},
function(data) {
// Rückgabewert verarbeiten
}
);

Als Rückgabewert erhalten wir alle Dateinamen welche sich im Ordner dokumente befinden. Wir erhalten diese Semikolongetrennt.

Darstellen können wir diese zum Beispiel nun in einer Dropdownliste (<select>).

$.post('getFiles.jsp',{
dir:'/Users/mkindler/dev/server/jboss-5.1.0.GA/server/default/deploy/loom.ear/loom-portal.war/custom/super/dokumente/'
},
function(data) {
// herausfiltern der Endung .pdf und Aufsplitten in ein Array aus Dateinamen
var stringSelect=$.trim(data).replace(/.pdf/g,"").split(";");
var selectBox = document.getElementById("ERSETZMICH");
var oldSelectBoxLength = selectBox.children.length;
for(var x=0;x<oldSelectBoxLength;x++){
var revOption = selectBox.children[x];
selectBox.remove(revOption);
}
var tmpOption = document.createElement("option");
tmpOption.text = "Bitte auswählen...";
selectBox.add(tmpOption);
for(var i=0; i<stringSelect.length-1; i++){
var tmpOption = document.createElement("option");
tmpOption.text = stringSelect[i];
tmpOption.value = stringSelect[i];
selectBox.add(tmpOption);
}
}
);