Membres


Pas encore membre ?
inscrivez-vous ici

Connexion :
Login
Code
Mot de passe perdu ?
Liste des membres

Uploader le contenu d'un dossier

Uploader le contenu d'un dossier


Uploader le contenu d'un dossier     Posté le 22/06/2005 à 00:00
J3R3My
Membre
J3R3My
67 posts
Inscrit le : 4/04/2005
Salut tout le monde,
Bon je cherche à uploader le contenu d'un dossier qui se trouve sur la machine cliente sur le FTP qui héberge le site en question. Je sais uploader un seul fichier à la fois mais ceci devient rapidement long lorsqu'il faut uploader une cinquantaine de fichiers (en l'occurrence des images pour une galerie photo que je suis en train de faire). Je pensais donc faire un formulaire avec un input de type "text" tout simple où l'on entrerait le chemin d'accès du répertoire de la machine cliente qui nous intéresse.

Cependant, je pense que ceci est impossible à faire en PHP pour des questions de sécurité qui se comprenne mais je post au cas où il y aurait tout de même une solution quelle qu'elle soit.
Merci d'avance.
 
Réponse à : Uploader le contenu d'un dossier     Posté le 22/06/2005 à 20:32
sky
Administrateur
Avatar
Site perso
4178 posts
Inscrit le : 13/08/2003
Slt

1) Il faudrai plutot Gzippé le contenu. genre, tu entre l\'url du répertire à gzippé, puis, une fois un fichier gzippé, on upload.
2) Essaye les connexion ftp en php, ça c\'est sur que ça foncitonnera.

Si tu fais l\'upload de ton ordi en local, ralonge de temps maxi d\'exécution de 30sc à 60sc. Cela te permettra d\'uiploader de plus gros fichier.

Si tu veut, je peut de filer qq exemple de connexion ftp et cmpression de donnée. smiley

Sky


_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Uploader le contenu d'un dossier     Posté le 22/06/2005 à 20:39
J3R3My
Membre
Avatar
67 posts
Inscrit le : 4/04/2005
bah en fait j\'avais trouvé ça sur nexen.net en faisant une recherche sur google :
<?php
 
function ftp_putdir($host $user $passwd $localdir $remotedir $port=21){
 
/* Paramètres
  * $host : hôte FTP
  * $user : login
  * $passwd : mot de passe
  * $localdir : dossier à envoyer
  * $remotedir : dossier ou stocker les fichiers
  * $port : port de connexion
  */
  
if (func_num_args() == 7)
  {
  
$stream func_get_args(6);
  }
  else
  {
  
$stream ftp_connect($host$port);
  if (!
ftp_login($stream$user$passwd))
  return 
FALSE;
  if (!
ftp_chdir($stream$remotedir))
  return 
FALSE;
  }
  if (!
is_readable($localdir))
  return 
FALSE;
 
  
$dir opendir($localdir);
  if (
is_resource($dir))
  {
  while(
$v readdir($dir))
  {
  if (
$v == . || $v == ..)
  continue;
 
  if (
is_dir("$localdir/$v\"))
  {
  if (!(@ftp_chdir($stream, \"$v\")))
  {
  ftp_mkdir($stream, \"$v\");
  ftp_chdir($stream, \"$v\");
  }
  ftp_putdir($host, $user, $passwd, \"$localdir/$v\", \"$remotedir/$v\",
$port, $stream);
  ftp_cdup($stream);
  }
  else
  {
  $fp = fopen(\"$localdir/$v\", \'r\');
  if (is_resource($fp))
  {
  ftp_fput($stream, $v, $fp, FTP_BINARY);
  fclose($fp);
  }
  }
  }
  }
}
?>


Mais il me semble que c\'est simplement pour transférer un dossier qui se trouve sur un FTP sur un autre FTP ?! peut être je me trompe mais je ne maîtrise pas encore les fonctions de PHP relatives aux transferts FTP.

[quote]Si tu fais l\'upload de ton ordi en local, ralonge de temps maxi d\'exécution de 30sc à 60sc. Cela te permettra d\'uiploader de plus gros fichier.[/quote]
Je fais l\'upload à partir de mon ordi sur un FTP distant. De plus je ne vois pas comment faire ça, c\'est un réglage PHP du serveur non ?! smiley On ne peut pas y avoir accès.

(tant de questions smiley )

[b]Edit: oui je veux bien de l\'aide et des exemples sky ;)[/b]

_______________________
Aucun
 
Réponse à : Uploader le contenu d'un dossier     Posté le 22/06/2005 à 21:05
sky
Administrateur
Avatar
Site perso
4178 posts
Inscrit le : 13/08/2003
Euh, méttons nous d\'accord, tu veut uploader de ton ordinateur vers ton site. Y\'a donc deux myen :

1) par http (formulaire d\'upload et php)
2) par ftp (connexion ftp en php)

Ton code pour la connexion ftp me semble nikel. Essaye le pour comprtendre comment ça marche.
De cette façon :
<?php
ftp_putdir
("ftp.tonsite.com\" , \"login\" , \"motdepasse\" , \"RepertoireLocale\" , \"RepertoireSurleSite\");
?>



RepertoireSurleSite
devrai être le chemin sur ton site ABSOLU qui va recevoir le fichier/dossier.

Pour ce qui est de l\'upload via http (formulaire plus php), tu peut essayer ça :
<?php
  
if(!isset($_POST)){
?>

<!-- Le type d\'encodage des données, enctype, DOIT être spécifié comme ce qui suit -->
<form enctype=\"multipart/form-data\" action=\"_URL_\" method=\"post\">
  <!-- MAX_FILE_SIZE doit précéder le champs input de type file -->
  <input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"30000\" />
  <!-- Le nom de l\'élément input détermine le nom dans le tableau $_FILES -->  
  Envoyez ce fichier : <input name=\"userfile\" type=\"file\" />
  <input type=\"submit\" value=\"Envoyer le fichier\" />
</form>

<?php
}else{

//    En PHP < 4.1.0, $HTTP_POST_FILES doit être utilisé
//    à la place de $_FILES.
//    Mettre tes propres infos sur les deux varibale cidessous

$uploaddir = /var/www/uploads/;
$uploadfile $uploaddir.basename($_FILES[userfile][name]);

echo <
pre>;
if (
move_uploaded_file($_FILES[userfile][tmp_name], $uploadfile)) {
   echo 
"Le fichier est valide, et a été téléchargé
           avec succès. Voici plus d\'informations :\\n\";
} else {
   echo \"Attaque potentielle par téléchargement de fichiers.
         Voici plus d\'informations :\\n\";
}

echo \'Voici quelques informations de déboguage :\';
print_r($_FILES);

echo \'</pre>\';
}
?> 



ceci est trouver sur le site de php.net.

Pour ce qui est de rallonger le temps d\'exécution des script php, il faut que tu modifie le fichier php.ini ; recherche la ligne :
max_execution_time = 30 ; Maximum execution time of each script, in seconds

met 60 à la place de 30.

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Uploader le contenu d'un dossier     Posté le 22/06/2005 à 21:22
J3R3My
Membre
Avatar
67 posts
Inscrit le : 4/04/2005
Ok je vais donc tester le code que j\'ai trouvé. Par contre le script pour l\'upload par HTTP, je sais faire mais il ne permet que d\'uploader UN fichier.


_______________________
Aucun
 
Réponse à : Uploader le contenu d'un dossier     Posté le 22/06/2005 à 22:43
sky
Administrateur
Avatar
Site perso
4178 posts
Inscrit le : 13/08/2003
ha oui lol smiley
J\'ai oublié de mettre la compression gzip. Je vais me coucher là, boulot demain. Essaye déjà de faire qqchose avec ceci. Voici le code pour compresser UN fichier :
<?php
$data 
implode("\", file(\"TonFichier.txt\"));
$gzdata = gzencode($data, 9);
$fp = fopen(\"TonFichier.gz\", \"w+\");
fwrite($fp, $gzdata);
fclose($fp);
?> 


Tu pourrai par exemple faire une lecture récursive de ton répertoire, en ouvrant chaque fichier et l\'ajoutant à une seul variable puis, compresser le tout. je dit ça au pif hein ... je n\'ai pas tester.

Bonne nuit
Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Réponse à : Uploader le contenu d'un dossier     Posté le 10/10/2005 à 09:45
Supercore
Visiteur
Avatar
je parviens pas non plus à envoyer des fichiers à partir du pc client... une idée ?

_______________________
 
Réponse à : Uploader le contenu d'un dossier     Posté le 10/10/2005 à 09:48
Supercore
Visiteur
Avatar
pour être plus précis :
Je souhaite employer la méthode FTP;
C l\'instruction if (!is_readable($localdir))
qui plante...

il lit sur le serveur et non en local...
une idée ??

_______________________
 
Réponse à : Uploader le contenu d'un dossier     Posté le 10/10/2005 à 10:40
sky
Administrateur
Avatar
Site perso
4178 posts
Inscrit le : 13/08/2003
Slt

Comme ça ... telle que tu expose le pb, ça va être dur ^^
Donne plus de code smiley

Sky

_______________________
Graphiks : Cours PHP
Image
=> à quoi sert internet explorer ?
=> à télécharger firefox
 
Vous n'est pas connecté en temps que membre, parceque j'en ai marre du spam, SEUL les membres peuvent poster des messages sur le forum.

Nous  -  Plan du site  -  Informations légale  -  Contact  -  © Graphiks.net