Ce code permet 3 choses :
- Lister un repertoire du serveur.
- Visualiser les fichiers du repertoire en mode texte
- Effacer un fichier.
au moyen de 2 fichiers asp
- lstfile_log.asp
- readfile.asp
Le code est ecrit en JSCRIPT.
Source / Exemple :
<%
/* ***************************************************************************
- LE FICHIER lstfile_log.asp ***************
%>
<%@ Language=JScript %>
<%
/* **************************************************************************
Cette page permet de lister les fichiers dans un repertoire
un maximum de cst_MaxFiles fichiers peuvent être listés.
language : Jscript (tester sur XP pro, jsript version 5)
Auteur : D.HIVERT (septembre 2003)
Parametres: (POST ou GET) /
--------------------------
=> PATH= // indique le chemin reel du repertoire à lister
=> EDIT= // indiwue si on pourra lire (methode texte) le fichier
=> DELETE= // indique si on pourra supprimer le fichier depuis la page
exemple d'utilisation : /
------------------------
http://monserveur/monrep/lstfile_log.asp?PATH=c:\temp&DELETE=true&EDIT=false
pour raffraichir la page appuyer sur le bouton 'delete'
Liste des fonctions de la page /
-------------------------------
getParam (_param, _default)
DelFile (myFile)
FolderExist (myFolder)
TriTableau (LeTableau)
listeFile (l_s_Path)
date2string (d)
pages liées ou utilisées /
-------------------------
readfile.asp => sert à lire un fichier en mode texte
/* --------------------------------------------
VARIABLES DE CONFIG DE LA PAGE
-------------------------------------------- */
var cst_PathFiles = "";
var cst_EDIT = false;
var cst_DELETE = false;
/* --------------------------------------------
Definition des constantes
-------------------------------------------- */
//pour l'objet File
var cstPath = 0;
var cstName = 1;
var cstSize = 2;
var cstDateCreated = 3;
var cstDateLastAccessed = 4;
var cstDateLastModified = 5;
//Pour la page
var cst_MaxFiles = 1000;
/* --------------------------------------------
recup des variables
-------------------------------------------- */
nbFile = getParam("nbFile", "");
btn_Del = getParam("btn_Del", "");
cst_PathFiles = getParam("PATH","")+"";
cst_EDIT = getParam("EDIT", "");
cst_DELETE = getParam("DELETE", "");
/* --------------------------------------------
Verification d'execution de la page
-------------------------------------------- */
//-Si pas de chemin alors pas de recherche
if (cst_PathFiles=="" || cst_PathFiles==null) {
Response.write ("<center>Il n'y a pas de chemin indiqué</center>");
Response.end();
}
//-Peut on editer les fichiers
if (cst_EDIT=='true' || cst_EDIT=='TRUE' || cst_EDIT=='True') {
cst_EDIT = true;
}
//-Peut on supprimer les fichiers
if (cst_DELETE=='true' || cst_DELETE=='TRUE' || cst_DELETE=='True') {
cst_DELETE = true;
}
/* --------------------------------------------
Test la coherance de la chaine
-------------------------------------------- */
if ( String(cst_PathFiles.substr(cst_PathFiles.length-1,1))!=String("\\") ) {
cst_PathFiles += "\\";
}
else {
}
/* --------------------------------------------
On verifie que le chemin existe
-------------------------------------------- */
if (!FolderExist(cst_PathFiles)) {
Response.write ("<center>Le repertoire <b>"+cst_PathFiles+"</b> n'existe pas </center>");
Response.end();
}
/* --------------------------------------------
permet de supprimer les fichiers
-------------------------------------------- */
if (btn_Del!="") {
var myChk;
for (i=0; i<nbFile; i++) {
myChk = getParam("chkFile"+i,"");
if (myChk!="") {
DelFile (myChk);
}
}
}
/* --------------------------------------------
recup des fichiers
-------------------------------------------- */
var tabFiles;
var tabFilesTrie;
tabFiles = listeFile (cst_PathFiles);
tabFilesTrie = TriTableau (tabFiles);
/* ********************************************************************************** */
/* **********************LES FONCTIONS DE LA PAGE************************************ */
/* ********************************************************************************** */
/* ----------------------------------------------------------------------------------
Fonction : getParam
Description : récupère un paramètre (méthode GET ou POST)
Entrées : nom du paramètre, valeur par défaut
Sorties : chaine
---------------------------------------------------------------------------------- */
function getParam(_param, _default) {
var r = new String;
//on recherche le paramétre dans les paramétres passé en GET
if (""+ Request.QueryString(_param) != 'undefined')
r = Request.QueryString(_param);
//on recherche le paramétre dans les paramétres passé en POST
if (""+ Request.Form(_param) != 'undefined')
r = Request.Form(_param);
//si on a pas de parametre, on retourne la valeur par defaut
if (r==null || r=='')
r = _default;
return r;
}
/* ----------------------------------------------------------------------------------
fonction : DelFile
description : Permet de supprimer un fichier du disk (si le repertoire le permet)
entree : nom du fichier
sortie : -
---------------------------------------------------------------------------------- */
function DelFile (myFile) {
var Fs;
try {
Fs=new ActiveXObject("Scripting.FileSystemObject");
Fs.deleteFile (myFile+"");
} catch (e){
Response.write ("Le fichier "+myFile+" n'est pas effacé<br>");
}
}
/* ----------------------------------------------------------------------------------
fonction : FolderExist
description : Permet de savoir si un repertoire existe
entree : tableau à trier
sortie : -
---------------------------------------------------------------------------------- */
function FolderExist (myFolder) {
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
return fso.FolderExists(myFolder);
}
/* ----------------------------------------------------------------------------------
fonction : TriTableau
description : Permet renvoyer un tableau Trié issu du tableau transmis en paramétre
entree : tableau à trier
sortie : -
---------------------------------------------------------------------------------- */
function TriTableau (LeTableau) {
var Ligne_Tampon;
var NewPasse;
var tmpLeTableau, Max;
Max = LeTableau.length;
tmpLeTableau = new Array(Max);
if (Max==null || Max=='undefined') return LeTableau;
//-copie le tableau
for (i=0; i<Max; i++) {
tmpLeTableau[i] = LeTableau[i];
}
NewPasse = "true";
while (NewPasse!="false") {
//-Chaque élément est comparé à celui qui lui est supérieur dans le classement
NewPasse = "false";
for (j=0; j<(Max-1); j++) {
//-Test si J et plus grand que J+1
if ( (tmpLeTableau[j]>tmpLeTableau[j + 1]) && tmpLeTableau[j]!=null && tmpLeTableau[j]!="") {
Ligne_Tampon = tmpLeTableau[j];
tmpLeTableau[j] = tmpLeTableau[j + 1];
tmpLeTableau[j + 1] = Ligne_Tampon;
NewPasse = "true";
}
}
}
return tmpLeTableau;
}
/* ----------------------------------------------------------------------------------
fonction : listeFile
description : Permet de trouver tous les fichiers d'un Repertoire
entree : chemin physique
sortie : tableau de String
note : Organisation des resultats
Path;Name;Size;DateCreated;DateLastAccessed;DateLastModified
---------------------------------------------------------------------------------- */
function listeFile (l_s_Path) {
var i, s, re;
var tab_Files = new Array (cst_MaxFiles);
//-Definiton des variables
var l_fs //systeme de fichier
var i;
//-Creation de la variable de Drives--
l_fs = new ActiveXObject("Scripting.FileSystemObject");
//-Creation de la colections de FILES
l_folder = l_fs.getFolder(l_s_Path);
l_files = new Enumerator(l_folder.files);
//-Boucle sur tous les fichiers du répertoires (Extention)
i = 0;
s = new String("");
for (; !l_files.atEnd() && i<cst_MaxFiles; l_files.moveNext()) {
s = l_files.item();
a = s.Path+";"+s.Name+";"+s.Size+";"+s.DateCreated+";"+s.DateLastAccessed+";"+s.DateLastModified;
tab_Files[i] = a;
i++;
}
return tab_Files;
}
/* ----------------------------------------------------------------------------------
fonction : date2string
description : Permet de renvoyer une date DD/MM/YYYY HH:MM
entree : objet Date
sortie : string
---------------------------------------------------------------------------------- */
function date2string (d) {
var str="";
var strDate, strMonth, strYear, strHours, strMinutes;
strDate = d.getDate();
strMonth = (Number(d.getMonth())+1);
strYear = d.getYear();
strHours = d.getHours();
strMinutes = d.getMinutes();
str += strDate <10? "0"+strDate +"/" : strDate+"/";
str += strMonth <10? "0"+strMonth +"/" : strMonth+"/";
str += strYear <10? "0"+strYear +" " : strYear+" ";
str += strHours <10? "0"+strHours +":" : strHours+":";
str += strMinutes<10? "0"+strMinutes+"" : strMinutes+"";
return str;
}
%>
<HTML>
<HEAD>
<link rel="stylesheet" type="text/css" href="../style_crue.css">
<STYLE>
.texteNoir10 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #000000}
.texteNoir12 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #000000}
.texteNoir10Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #000000; font-weight: bold}
.texteNoir12Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #000000; font-weight: bold}
.texteBleu10 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #11067c}
.texteBleu12 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #11067c}
.texteBleu10Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #11067c; font-weight: bold}
.texteBleu12Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #11067c; font-weight: bold}
.texteGris12 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #999999}
.texteGris12Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #999999; font-weight: bold}
.texteBlanc10 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #FFFFFF}
.texteBlanc12 { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #FFFFFF}
.texteBlanc10Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 10px; color: #FFFFFF; font-weight: bold}
.texteBlanc12Gras { font-family: Verdana, Arial, Helvetica, sans-serif; TEXT-DECORATION: none; font-size: 12px; color: #FFFFFF; font-weight: bold}
</STYLE>
</HEAD>
<BODY bgcolor="ffffff">
<div align="center">
<FORM METHOD="POST">
<TABLE cellspacing="0" cellpadding="0" border="0" width="800">
<TR>
<TD bgcolor="11067c" align="center" colspan="5"><font color="#999999" size="2" class="texteGris12Gras"><b>Liste des fichiers du dossier=></font><font color="#FFFFFF" size="2" class="texteBlanc12Gras"><%=cst_PathFiles%></font></TD>
</TR>
<TR>
<TD width="70" align="center"><input type="submit" name="btn_Del" value="delete"></TD>
<TD width="600" align="left"><font color="000000" size="1" class="texteNoir10Gras"><b>Nom</b></TD>
<TD width="50" align="right"><font color="000000" size="1" class="texteNoir10">Taille</TD>
<TD width="5"> </TD>
<TD align="center" nowrap><font color="000000" size="1" class="texteNoir10">Date modification</TD>
</TR>
<%
var FileItem, FileSize, FileName;
var nbFileView=0;
for (i=0; i<tabFilesTrie.length; i++) {
if (tabFilesTrie[i]!="" && tabFilesTrie[i]!=null && tabFilesTrie[i]!="undefined") {
//-recup d'un element
FileItem = String(tabFilesTrie[i]).split(";");
//-recup du nom du fichier
FileName = FileItem[cstPath];
//-création de la taille du fichier
if (FileItem[cstSize]>(1024*1024)) {
FileSize = Math.ceil(((Number(FileItem[cstSize])/1024)/1024)) + " Mo";
}
else {
if (FileItem[cstSize]>1024) {
FileSize = Math.ceil((Number(FileItem[cstSize])/1024)) + " ko";
}
else {
FileSize = FileItem[cstSize] + " oc"
}
}
//-date de dernière modif
LastModif = date2string (new Date(FileItem[cstDateLastModified]));
Response.write (' <TR>\n');
Response.write (' <TD align=\"center\">');
if (cst_DELETE) {
Response.write ('<input type=\"checkbox\" name=\"chkFile' + i + '\" value=\"' + FileName + '\">');
}
else {
Response.write (' ');
}
Response.write ('</TD>\n');
Response.write (' <TD bgcolor=\"#99cccc\" nowrap>');
if (cst_EDIT) {
Response.write ('<a href=\"readfile.asp?FILENAME='+FileItem[cstPath]+'\" target=\"_blank\">');
}
Response.write ('<font color=\"#11067c\" size="1" class=\"texteNoir10\">' + FileItem[cstName] + '</font>');
if (cst_EDIT) {
Response.write ('</a>');
}
Response.write ('</TD>\n');
Response.write (' <TD bgcolor=\"#99cccc\" align=\"right\">');
Response.write ('<font color=\"#000000\" size=\"1\" class=\"texteNoir10\">' + FileSize + '</font>');
Response.write ('</TD>\n');
Response.write (' <TD> </TD>');
Response.write (' <TD bgcolor=\"#ffffff\" align=\"right\" nowrap>');
Response.write ('<font color=\"#000000\" size=\"1\" class=\"texteNoir10\">' + LastModif + '</font>');
Response.write ('</TD>\n');
Response.write (' </TR>\n');
nbFileView++;
}
}
%>
<caption><input type="hidden" name="nbFile" value="<%=i%>"><font size="1" color="#000000">il y a <%=nbFileView%> fichiers dans le dossier</font></caption>
</TABLE>
</form>
</div>
</BODY>
</HTML>
<%
/* ***************************************************************************
- LE FICHIER readfile.asp ***************
%>
<%@ Language=JScript %>
<%
/* **************************************************************************
Cette page permet de lister les fichiers dans un repertoire
un maximum de cst_MaxFiles fichiers peuvent être listés.
language : Jscript (tester sur XP pro, jsript version 5)
Auteur : D.HIVERT (septembre 2003)
Parametres: (POST ou GET) /
--------------------------
=> FILENAME= // indique le chemin et le nom du fichier
exemple d'utilisation : /
------------------------
http://monserveur/monrep/readfile.asp?FILEMANE=c:\temp\monfichier.txt
Liste des fonctions de la page /
-------------------------------
getParam (_param, _default)
Replace (strOrg, strRec, strRep)
FileExist (FileName)
ReadFiles (FileName)
pages liées ou utilisées /
-------------------------
-
var FILENAME;
/* --------------------------------------------
recup des variables
-------------------------------------------- */
FILENAME = getParam ("FILENAME","");
/* --------------------------------------------
On verifie que l'on demande bien d'afficher
un fichier
-------------------------------------------- */
if (FILENAME==null || FILENAME=="") {
Response.write ("<br><center>Il n'y a pas de fichier indiqué</center>");
Response.end();
}
/* --------------------------------------------
Le fichier existe, on traite et on affiche
-------------------------------------------- */
if (FileExist (FILENAME)) {
strFile = ReadFiles (FILENAME);
strFile = Replace (strFile,'&', String.fromCharCode(38)+'amp;'); //remplace '&' par son code HTML
strFile = Replace (strFile,'<', String.fromCharCode(38)+'lt;'); //remplace '<' par son code HTML
strFile = Replace (strFile,'>', String.fromCharCode(38)+'gt;'); //remplace '>' par son code HTML
//affichage du fichier
Response.write ("<pre>Le fichier est: <b>"+FILENAME+"</b></pre>");
Response.write ("<pre>");
Response.write (strFile);
Response.write ("</pre>");
}
/* --------------------------------------------
Le fichier n'existe pas
-------------------------------------------- */
else {
Response.write ("<br><center>Il n'y a pas de fichier à l'endroit indiqué ( "+FILENAME+" )</center>");
Response.end();
}
/* ********************************************************************************** */
/* **********************LES FONCTIONS DE LA PAGE************************************ */
/* ********************************************************************************** */
/* ----------------------------------------------------------------------------------
Fonction : getParam
Description : récupère un paramètre (méthode GET ou POST)
Entrées : nom du paramètre, valeur par défaut
Sorties : chaine
---------------------------------------------------------------------------------- */
function getParam(_param, _default) {
var r = new String;
//on recherche le paramétre dans les paramétres passé en GET
if (""+ Request.QueryString(_param) != 'undefined')
r = Request.QueryString(_param);
//on recherche le paramétre dans les paramétres passé en POST
if (""+ Request.Form(_param) != 'undefined')
r = Request.Form(_param);
//si on a pas de parametre, on retourne la valeur par defaut
if (r==null || r=='')
r = _default;
return r;
}
/* ----------------------------------------------------------------------------------
Fonction : Replace
Description : Permet de remplacer dans une chaine une ocurence par une autre
respecte la Casse
Entrées : chaine, chaine
Sorties : chaine
---------------------------------------------------------------------------------- */
function Replace (strOrg, strRec, strRep) {
var tmp = "";
var re = new RegExp(strRec,"gm");
if (strOrg!=null)
{
tmp += strOrg;
tmp = tmp.replace(re,strRep);
}
return tmp;
}
/* ----------------------------------------------------------------------------------
Fonction : FileExist
Description : Vérifie l'existance d'un fichier
Entrées : nom du fichier
Sorties : true | false
---------------------------------------------------------------------------------- */
function FileExist (FileName) {
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
return fso.FileExists(FileName);
}
/* ----------------------------------------------------------------------------------
Fonction :
Description : Permet d'ecrire un fichier Texte ligne par ligne
Entrées : nom du fichier
Sorties : chaine (formatée)
---------------------------------------------------------------------------------- */
function ReadFiles(FileName) {
var fso, ts, s;
var ForReading = 1;
var strFile="";
var nbLine=0;
var maxLineRead=1000; //indique le nombre de lignes max à traiter
fso = new ActiveXObject("Scripting.FileSystemObject");
// Lire le contenu du fichier.
ts = fso.OpenTextFile(FileName, ForReading);
while (!ts.AtEndOfStream && nbLine<maxLineRead) {
s = ts.ReadLine();
strFile += s + String.fromCharCode(13,10);
nbLine++;
}
ts.Close();
//-Depasse le nombre de ligne max (on l'indique en haut du document)
if (nbLine>=maxLineRead) {
strFile = "||ONLY "+maxLineRead+" FIRST LINE IS READ||"+ String.fromCharCode(13,10) + strFile;
}
return strFile;
}
%>
Conclusion :
Voila.
J'espere avoir ete clair.
Petite note de fin de page :
Si vous voulez effacer un fichier via cette page et que ce fichier est 'resistant', verifiez que
votre utilisateur Internet a les droits d'effacer dans le repertoire.
Salutation.
Une petite Erreur est survenue dans les fichiers compressees, lisez le code pour faire la
correction pour la suppresion des fichiers.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.