files inlezen uit directory

Status
Niet open voor verdere reacties.

jorre13

Gebruiker
Lid geworden
8 feb 2007
Berichten
27
Ik zou willen dat er op mijn scherm een lijst wordt gegeven van de files aanwezig in een bepaalde directory. Momenteel kan ik enkel de link naar die directory uitlezen, maar nog geen filenamen. Is er iemand die mij kan helpen???

alvast bedankt
 
Dat kan met het FileSystemObject:
PHP:
<script type="text/javascript">

 function ShowFolderFileList(folderspec) {
  var fso, f, fc, s;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.GetFolder(folderspec);
  fc = new Enumerator(f.files);
  s = "";
  for (; !fc.atEnd(); fc.moveNext()) {
   s += fc.item();
   s += "<br>";
   };
  return(s);
  };

document.writeln(ShowFolderFileList('C:\\'));

</script>
http://msdn.microsoft.com/library/en-us/script56/html/ad23fd3a-5492-4a97-b83d-0ad0804d1e8f.asp

Je krijgt wel een waarschuwing voor het ActiveX object omdat je er ook files mee kan schrijven / wissen (andere opdracht dan deze). Ongeveer zoals met .bat files.


Vr.Gr. Egel.
 
Bedankt je helpt me alleszins al een beetje op weg, nog een klein vraagje. Hoe laat ik hem nu de bestanden tonen die in de map zitten waar ge nu staat. Momenteel toont ie deze van de c:/
 
Ik had ook al gezocht of daar een speciale functie voor was ... maar het kan gewoon met location:
Code:
var dir = unescape(location.href);
dir = dir.substring(dir.lastIndexOf('//') + 2,dir.lastIndexOf('/') + 1).replace(/\//g,'\\');

document.writeln(ShowFolderFileList(dir));

Dit is misschien wel handig: :)
Code:
<script type="text/javascript">
 // Egel 070210 ;)

 function GetFolderFileList(folderspec) {
  var fso, f, fc, s = new Array(), name;
  fso = new ActiveXObject('Scripting.FileSystemObject');
  f = fso.GetFolder(folderspec);
  fc = new Enumerator(f.files);
  for (; !fc.atEnd(); fc.moveNext()) {
   name = '' + fc.item();
   name = name.substring(name.lastIndexOf('\\') + 1);
   s[s.length] = name;
   };
  return s;
  };

 var dir = unescape(location.href);
 dir = dir.substring(dir.lastIndexOf('//') + 2,dir.lastIndexOf('/') + 1).replace(/\//g,'\\');
 var files = GetFolderFileList(dir);

 // map:
 alert(dir);
 // bestanden (array)
 alert(files);

</script>
Dan heb je de mapnaam in de variabele dir en de bestanden in de array files: files[0] files[1] ... files[files.length-1].

In html weergeven kan dan bv met:
document.writeln(files.join('<br>') + '<br>');


Vr.Gr. Egel.
 
Laatst bewerkt:
ziet er nog niet veel beter uit, wanneer ik dit probeer geeft ie nog altijd de files in de c:

Wanneer je echter de variabele dir uitleest verwijst hij wel naar de juiste locatie maar enkel bij
PHP:
var dir = location.pathname;

In de volgende lijn
PHP:
dir = dir.substring(1,dir.lastIndexOf('\\'));
wordt dir = /

waarschijnlijk wil hij daardoor niet de huidige locatie uitlezen.

Wanneer ik de variabele dir hardmatig aanpas (de huidige locatie zelf declareer) dan geeft het proggie geen output meer
 
Laatst bewerkt:
Ik was vergeten de location te unescapen, :o daardoor deed ie het niet bij mapnamen met spaties (worden %20). De location.href wordt nu gebruikt, en \ als laatste teken voor de dir omdat de hoofdmap het anders niet doet.

Dit is een nieuwe functie waarmee je zowel een bestandslijst als een submappenlijst kunt opvragen:
Code:
<style type="text/css">
 body { font: 13px 'Courier New';}
 b { background: #fea;}
 i { background: #ffc;}
</style>

<script type="text/javascript">
 // Egel 070210 ;)

 function getFolderList(folderspec,askDir) {
  var fso, f, fc, s = new Array(), name;
  fso = new ActiveXObject('Scripting.FileSystemObject');
  f = fso.GetFolder(folderspec);
  fc = askDir ? new Enumerator(f.SubFolders) : new Enumerator(f.files);
  for (; !fc.atEnd(); fc.moveNext()) {
   name = '' + fc.item();
   name = name.substring(name.lastIndexOf('\\') + 1);
   s[s.length] = name;
   };
  return(s);
  };

 var dir = unescape(location.href);
 dir = dir.substring(dir.lastIndexOf('//') + 2,dir.lastIndexOf('/') + 1).replace(/\//g,'\\');
 var dirs = getFolderList(dir,true), files = getFolderList(dir);

 document.writeln('<b>' + dir + '</b><br>');
 document.writeln('<i>' + dirs.join('<br>') + '</i><br>');
 document.writeln(files.join('<br>') + '<br>');

</script>
:)

Vr.Gr. Egel.

P.s.
in javascript is \ het escapeteken, de map C:\windows\system schrijf je dan als:

var dir = 'C:\\windows\\system';
 
Heel erg bedankt. dit is wat ik nodig had.

Misschien nog een vraagje. Is het mogelijk dak ik ik nu bijvoorbeeld enkel de files weergeef met de .jpg extensie ofzo?
 
Heel erg bedankt. dit is wat ik nodig had.
Graag gedaan! :)

Het FileSystemObject was ook nieuw voor mij en ik ga dat zeker nog vaker gebruiken. :thumb:
Misschien nog een vraagje. Is het mogelijk dak ik ik nu bijvoorbeeld enkel de files weergeef met de .jpg extensie ofzo?
Ja, bv met:
for (var i = 0; i < files.length; i++) {
if (/\.(jpg|jpe|jpeg|jfif)$/.test(files.toLowerCase())) {
document.writeln('<img src="' + files + '">');
};
};


dat kijkt of de lowercase bestandsnaam eindigt op .jpg .jpe .jpeg of .jfif (allemaal jpeg foto's).

Dit is een webpagina die alle plaatjes in een map weergeeft:
Code:
<script type="text/javascript">
 // Egel 070212 ;)

 function GetFolderFileList(folderspec) {
  var fso, f, fc, s = new Array(), name;
  fso = new ActiveXObject('Scripting.FileSystemObject');
  f = fso.GetFolder(folderspec);
  fc = new Enumerator(f.files);
  for (; !fc.atEnd(); fc.moveNext()) {
   name = '' + fc.item();
   name = name.substring(name.lastIndexOf('\\') + 1);
   s[s.length] = name;
   };
  return s;
  };

 var dir = unescape(location.href);
 dir = dir.substring(dir.lastIndexOf('//') + 2,dir.lastIndexOf('/') + 1).replace(/\//g,'\\');
 var files = GetFolderFileList(dir);

 for (var i = 0; i < files.length; i++) {
  if (/\.(jpg|jpe|jpeg|jfif|gif|png|bmp)$/.test(files[i].toLowerCase())) {
   document.writeln('<img src="' + files[i] + '" title="' + files[i] + '">');
   };
  };
</script>
:)

Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan