Aller au contenu

Télécharger un dossier entier


Anonymus

Sujets conseillés

Bonjour,

Je cherche un script en php à mettre sur un serveur, qui permette de choisir un dossier sur le disque dur, et de l'uploader sur le serveur.

Mais il faudrait qu'il puisse récupérer l'ensemble du dossier, et pas seulement un fichier.

Merci d'avance ;)

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Quelle taille va faire le répertoire en moyenne ? Parce que attention avec les limitations en taille et en temps d'exécution selon ton hébergeur c'est déja là que tu risque de bloquer.

Lien vers le commentaire
Partager sur d’autres sites

Pour la taille du répertoire, ce n'est pas un problème.

Je définis moi meme la taille maxi, et idem pour le temps.

Mais ca devrait pas faire plus de quelques Ko, mais un bon paquet de .txt, avec le problème que c'est à destination de personnes qui ne connaissent pas grand chose à tout ca :D

Lien vers le commentaire
Partager sur d’autres sites

Que l'on me corrige si je me trompe, mais je ne croit pas que cela soit possible.

Pour envoyer un fichier du client au serveur de cette façon il doit obligatoirement être envoyé à partir d'un input file.

Pour ma part lorsque j'ai plusieurs fichiers à envoyer sur un serveur j'en fait un fichier zip, que le script dézzipe côté serveur avec la librairie pclzip.

http://www.phpconcept.net/pclzip/

Lien vers le commentaire
Partager sur d’autres sites

Bon..

J'ai passé pas mal de temps à chercher, et je n'ai pas trouvé.. :(

Il y a différents trucs en java, comme ceci par exemple :

http://www.radinks.com/upload/demo.php

Ceci dit, ca ne répond pas à ma question. :(

A savoir si c'est possible, je pense que si. Avec javascript, il est possible de lister un dossier, il ne resterait plus qu'à faire une boucle pour récupérer l'ensemble des dossiers...

Bon.. Je vais jeter un oeil de ce coté. Si quelqu'un a une idée, je suis (toujours) preneur ;)

Merci :)

Lien vers le commentaire
Partager sur d’autres sites

Je pense pas que ce soit possible en javascript/php car cela pose de sérieux problèmes de sécurité...

Si tu peux accéder au contenu d'un répertoire, il n'y a pas de raison que tu ne puisse pas accéder à l'ensemble d'un disque dur...

Tizel

Lien vers le commentaire
Partager sur d’autres sites

Le javascript tourne cote client. Idem pour les applications java.

Est-ce possible en PHP ?

Via PHP GTK tu devrais pouvoir realiser une application client. C'est possible mais le mieux pour realiser un client 'ftp' - puisque c'est de ca qu'il s'agit - serait d'utiliser un langage autre que PHP.

Une "bete" interface en Visual Basic, Java ou Delphi... :)

Lien vers le commentaire
Partager sur d’autres sites

Le javascript tourne en client ok, mais je Java lui tourne à partir de la machine virtuelle qui elle dispose d'api nécessaire pour ce genre d'application c'est pourquoi la plupart des intranets sont fait en Java.

Lien vers le commentaire
Partager sur d’autres sites

Il est pourtant facile de trouver l'arborescence d'un disque dur, via ActiveX, c'est vrai. Mais ca m'irait. le problème est que j'arrive bien à 'avoir' le répertoire en question, reste plus qu'à récupérer la valeur, puis... à lister les fichiers (j'ai pas fini, quoi..)

<html>
<head>
<title>Selection de repertoire</title>
<style type="text/css">
body {
font-family : Tahoma;
font-size : xx-small;
}
a, a:hover, a:active {
font-family : Tahoma;
font-size : xx-small;
}
div {
font-family : Tahoma;
font-size : xx-small;
border : 1px solid #000000;
padding : 5px;
}
</style>
<script language="JavaScript">

var FSO;
var sOut = "";
var nl = "<br>" + String.fromCharCode(13);
var ImgPath = "Img/";
var sImgFolder = "   <img src=\"" + ImgPath + "folder.gif\"";
sImgFolder += " width=\"15\" height=\"13\" border=\"0\"> ";
var sImgFolderUp = "   <img src=\"" + ImgPath + "folder_up.gif\"";
sImgFolderUp += " width=\"15\" height=\"13\" border=\"0\"> ";
var sImgDrive = "   <img src=\"" + ImgPath + "drive.gif\"";
sImgDrive += " width=\"15\" height=\"13\" border=\"0\"> ";
var sImgDriveA = "   <img src=\"" + ImgPath + "drive_a.gif\"";
sImgDriveA += " width=\"15\" height=\"13\" border=\"0\"> ";

var DisplayPath = "";

function replaceAll(inSTR, inTOK, inREP) {
var s;
s = inSTR + "";
while (s.indexOf(inTOK) >= 0) {
 s = s.replace(inTOK, "§");
};
while (s.indexOf("§") >= 0) {
 s = s.replace("§", inREP);
};
return s;
};

function getQuery(inINDX){
var queryString = location.search;
if (queryString != "") {
 var data = queryString.slice(1,queryString.length);
 var aData = data.split("&");
 var aOut = aData[inINDX].split("=");
 return aOut[1];
} else {
 return "NoData";
}
};

function GetCurrentFolder() {
return DisplayPath;
};

function GoToDrives() {
DisplayPath = "";
GetDrives();
};

function GoToFolder(inFOLDER) {
DisplayPath = inFOLDER;
GetFolders();
};

function GetFolders() {
// Balayage Repertoires
var rep, sRep, i, t;
sOut = "";
sOut += DisplayPath + "<br><br>";
t = DisplayPath.substring(0, DisplayPath.length - 1);
t = t.substring(0, t.lastIndexOf(String.fromCharCode(92)) + 1);
if (t + "" != "") {
 sOut += sImgFolderUp + "<a href=\"javascript:GoToFolder('";
 sOut += replaceAll(t, String.fromCharCode(92), "\\\\") + "');\" border=\"0\">";
 sOut += "Repertoire Parent</a><br>";
} else {
 sOut += sImgFolderUp + "<a href=\"javascript:GoToDrives();\" border=\"0\">";
 sOut += "Repertoire Parent</a><br>"
}
try {
 rep = FSO.GetFolder(DisplayPath);
 var rOK = true;
}
catch (e) {
 var rOK = false;
}
if (rOK) {
 sRep = new Enumerator(rep.SubFolders);
 if (sRep.atEnd()) {
  sOut += "   Pas de sous-repertoires";
 } else {
  for (i = 0; !sRep.atEnd(); sRep.moveNext()) {
   sOut += sImgFolder + "<a href=\"javascript:GoToFolder('";
   sOut += replaceAll(sRep.item(), String.fromCharCode(92), "\\\\") + "\\\\');\" border=\"0\">";
   sOut += sRep.item() + "\\</a>" + nl;
  };
 }
} else {
 sOut += "   Pas de sous-repertoires";
}
document.getElementById("SRInterface").innerHTML = sOut;
}

function GetDrives() {
// Balayage Disques
var drv, i;
sOut = "";
sOut += "Poste de travail<br><br>";
var drvGlo = new Enumerator(FSO.Drives);
for (i = 0; !drvGlo.atEnd(); drvGlo.moveNext()) {
 drv = drvGlo.item();
 if (drv.DriveType == 2) {
  sOut += sImgDrive + "<a href=\"javascript:GoToFolder('";
  sOut += drv.DriveLetter + ":\\\\');\" border=\"0\">";
  sOut += drv.DriveLetter + ":\\</a>" + nl;
 } else if (drv.DriveType == 1) {
  sOut += sImgDriveA + "<a href=\"javascript:GoToFolder('";
  sOut += drv.DriveLetter + ":\\\\');\" border=\"0\">";
  sOut += drv.DriveLetter + ":\\</a>" + nl;
 }
};
document.getElementById("SRInterface").innerHTML = sOut;
};

function DoLoad() {
var ActiveXOK;
try {
 var FSOT = new ActiveXObject("Scripting.FileSystemObject");
 ActiveXOK = true;
}
catch (e) {
 ActiveXOK = false;
}
if (ActiveXOK) {
 FSOT = null;
 FSO = new ActiveXObject("Scripting.FileSystemObject");
 GetDrives();
} else {
 var lf = "<br>" + String.fromCharCode(13);
 sOut = "";
 sOut += "Ce script est dedié Internet Explorer." + lf;
 sOut += "L'utilisation de ce script nécessite une configuration de la securite de votre navigateur." + lf;
 sOut += "Allez dans Menu Outils > Options Internet >";
 sOut += " Sécurité > Personnaliser le niveau > Contrôles ActiveX et plugins" + lf;
 sOut += "Authorisez l'utilisation des composants ActiveX."
 document.getElementById("SRInterface").innerHTML = sOut;
}
};
</script>
</head>

<body onLoad="DoLoad();">

<div id="SRInterface"></div>
<br>
<br>


<a href="javascript:alert(GetCurrentFolder());" border="0">
Recuperer le repertoire en cours (javascript:GetCurrentFolder();)
</a>
<br>
</body>
</html>

Et à ce sujet, comment faire pour récupérer la valeur GetCurrentFolder() dans un champ input ?

<input type=text name=truc value='??'>

Merci.

Lien vers le commentaire
Partager sur d’autres sites

Et à ce sujet, comment faire pour récupérer la valeur GetCurrentFolder() dans un champ input ?

<input type=text name=truc value='??'>

Merci.

<{POST_SNAPBACK}>

ca c'est le B A BA du javascript, a l'inverse du truc que tu as posté qui est pas mal "balaise" ;)

document.forms['nomduform'].elements['nomduchamps'].value = GetCurrentFolder()

(attention a mettre une balise <Form> si tu as un champs de formulaire)

Lien vers le commentaire
Partager sur d’autres sites

Ce qui donne ceci :

<form name=machin method=POST >
<input type=hidden name=truc value="">
<input type=submit name=submit value=submit  onClick="javascript:document.forms['machin'].elements['truc'].value = GetCurrentFolder()">
</form>

et que l'on peut récupérer tout simplement avec un :

<?
$rep = $_POST['truc']
?>

(on se rattrappe comme on peut :D )

Bon, je crois que Filezilla est pas cher :lol:

Je vais p'tete bien gagner du temps :whistling:

Merci tout de meme ;)

Anonymus.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...