Bonjour à tous,
J'ai trouvé ce code sur ASP-PHP.net. C'est un code d'upload de fichier via FTP:
<?
$conn_id = ftp_connect("ftp.web-stockage.com"); // Connexion au ftp
ftp_login($conn_id,"webst","d291515"); // Identification
$RepDistant="upload/"; // Répertoire distant
$UnLien="http://webstockage.dyndns.org/"; // URL du site
$PoidsMax=1; // Exprimé en Mo, ici 5Mo
$PoidsMax=$PoidsMax*1000000; // On convertir en octets 5Mo -> 5 000 000 octets
// Notre fonction de suppression
// LeParam1 : Nom fichier à supprimer
// LeParam2 : Connexion FTP
function Supprim($LeParam1,$LeParam2){ // Notre fonction de suppression
global $RepDistant; // On récupère notre variable globale
// On supprime le fichier
if(ftp_delete($LeParam2,$RepDistant."$LeParam1")==true){ ?>
<!-- On affiche un message de succès si l'opération réussit -->
<tr>
<td align="center" valign="middle"><br>
<img src="images/valider.gif" width="20" height="18"></td>
<td valign="middle"><br>
<p>Le fichier '<? echo $LeParam1; ?>' a été effacé avec succès.</p></td>
</tr>
<? }else{ ?>
<!-- On affiche un message d'erreur si l'opération échoue -->
<tr>
<td align="center" valign="middle"><br>
<img src="images/annuler.gif" width="21" height="21"></td>
<td valign="middle"><br>
<p>La suppression de '<? echo $LeParam1; ?>' a échoué.</p></td>
</tr>
<? }
}
// Notre fonction d'envoi
// LeParam1 : Nom du temporaire du fichier après transfert sur le serveur principal
// LeParam2 : Nom du fichier
// LeParam3 : Connexion FTP
function Upload($LeParam1,$LeParam2,$LeParam3){
global $RepDistant; // On récupère nos variables globale
global $UnLien;
// Petit cadeau bonus, un code permettant d'interdire l'envoi de fichier .php
if (strlen(stristr($LeParam2."a",".php"))==0){
if(ftp_put($LeParam3,$RepDistant."$LeParam2",$LeParam1,1)==1){ ?>
<!-- On affiche un message de succès si l'opération réussit -->
<tr>
<td align="center" valign="middle"><br>
<img src="images/valider.gif" width="20" height="18"></td>
<td valign="middle"><br>
<p>Le transfert de '<? echo $LeParam2; ?>' a été effectué avec succès.(
<a href="<? echo $UnLien.$RepDistant."$LeParam2"; ?>" target="_blank">
<? echo $UnLien.$RepDistant."$LeParam2"; ?>
</a>
)</p>
</td>
</tr>
<? }else{ ?>
<!-- On affiche un message d'erreur si l'opération échoue -->
<tr>
<td align="center" valign="middle"><br>
<img src="images/annuler.gif" width="21" height="21"></td>
<td valign="middle"><br>
<p>Le transfert de '<? echo $LeParam2; ?>' a échoué.</p></td>
</tr>
<? }
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
var Nb=1;
function AjoutChamps(LeParam){
Nb++;
// Code ajouté : On clone aussi le champs caché qui recevra le nom du fichier
LeCache=document.getElementById("File"+(Nb-1)).cloneNode(true);
LeCache.name="File"+Nb;
LeCache.id="File"+Nb;
document.getElementById("LesChamps").appendChild(LeCache);
// --------------------------------------------------------------------
LeFile=document.getElementById("Champ"+(Nb-1)).cloneNode(true);
LeFile.name="Champ"+Nb;
LeFile.id="Champ"+Nb;
document.getElementById("LesChamps").appendChild(LeFile);
LeRetourChariot=document.createElement("br");
document.getElementById("LesChamps").appendChild(LeRetourChariot);
document.getElementById("Champ"+(Nb-1)).onchange="";
if(Nb==10)
document.getElementById("Champ"+(Nb)).onchange="";
}
function Envoyer(){
// Cette fonction a pour but de déterminer le nom du fichier sélectionné dans les champs FILE,
// de la stocker dans le champs chaché correspondant et d'envoyer le formulaire
// Pour celà, pour chaque champs, elle doit récupérer la chaine qui se trouve après le dernier '\'
// c:\photos\maphoto.jpg -> maphoto.jpg
var Boucle=1;
while(document.getElementById("Champ"+Boucle)){ // Pour chaque champ
LeFile=document.getElementById("File"+Boucle);
// On copie l'adresse du fichier dans le champs caché qui lu iest attribué
LeFile.value=document.getElementById("Champ"+Boucle).value;
// Ensuite, tant que l'on trouve un '\' dans la valeur du champs caché,
// on supprime tout ce qui se trouve avant celui-ci ainsi que le '\' lui même.
// Exemple :
// c:\photos\vacances\moi.jpg
// ^---- '\' détecté ! On garde que ce qui se situe après lui
// photos\vacances\moi.jpg
// ^---- '\' détecté ! On garde que ce qui se situe après lui
// vacances\moi.jpg
// ^---- '\' détecté ! On garde que ce qui se situe après lui
// moi.jpg
LaPos=LeFile.value.indexOf('\\');
while(LaPos>0){
// '\' détecté ! On garde que ce qui se situe après lui
LeFile.value=LeFile.value.substring(LaPos+1,LeFile.value.length+1);
// On cherche le prochain '\'
LaPos=LeFile.value.indexOf('\\');
}
Boucle++;
}
// On envoye ensuite le formulaire
document.LeForm.submit();
}
</script>
</head>
<body bgcolor="#000033" style="color:#CCCCCC ">
<p align="center"><strong>UPLOADS</strong></p>
<p align="justify"> </p>
<div align="center"> <br>
</div>
<div align="center">
<div id="Confirm" style="<? if(($_POST["File1"]=='')and($_POST["Supprim"]=="")){ ?>display:none;<? } ?>">
<table cellpadding="0" cellspacing="0" border="0">
<?
// Si la variable $_POST["Supprim"] a une valeur alors on appelle notre fonction de suppression
if ($_POST["Supprim"]!=""){
Supprim($_POST["Supprim"],$conn_id);
}
// Si la variable $_POST["File1"] a une valeur alors on appelle notre fonction d'upload
if($_POST["File1"]!=""){
?>
<!-- <?
// Si le répertoire n'existe pas, on le crée
if (ftp_chdir($conn_id,$RepDistant)==false){
ftp_mkdir($conn_id,$RepDistant);
}
?>-->
<?
// Tant qu'il y a des champs, on transfert...
$i=1;
while($_POST["File".$i]!=""){
Upload($_FILES["Champ".$i]["tmp_name"],$_POST["File".$i],$conn_id);
$i++;
}
}
?>
</table>
</div>
<!-- On affiche le poids de stockage maximal -->
<p>Poids de stockage maximal : <? echo round($PoidsMax/1000000,2); ?> Mo.</p>
<p><strong>Vos fichiers :</strong>
<table width="94%" height="62" border="1">
<tr>
<!-- La ligne d'en-tête -->
<td width="14%"><div align="center"><strong>Nom</strong></div></td>
<td width="68%"><div align="center"><strong>Adresse</strong></div></td>
<td width="13%"><div align="center"><strong>Taille</strong></div></td>
<td width="5%"><div align="center"><strong>Supprim</strong></div></td>
</tr>
<?
$TailleTotale=0; // Cette variable nous permettre de calculer le poids déjà occupé dans le répertoire
$DesFichier=ftp_nlist($conn_id,$RepDistant);
for($i=2;$i<sizeof($DesFichier);$i++){
// On énumère la liste des fichiers à partir du 3e élement (2e en partant de 0) puisque
// la fonction ftp_nlist renvois aussi les liens au répertoire précédent (..) ect...
// La fonction ftp_nlist renvoye la liste des fichiers avec leur nom et leur adresse relative
// Exemple : /upload/test//photo.jpg
// Le nom du fichier est séparé de l'adresse par //
// Pour le récupérer, on supprimer donc tout ce qui est avant le //
$UnFichier=substr($DesFichier[$i],strpos($DesFichier[$i],"//")+2);
?>
<tr>
<td>
<!-- On affiche le nom du fichier -->
<div align="center"><? echo $UnFichier; ?> </div>
</td>
<td>
<!-- On affcihe le lien menant au fichier -->
<div align="center"><strong>
<a href="<? echo $UnLien.$RepDistant.$UnFichier; ?>" target="_blank">
<? echo $UnLien.$RepDistant.$UnFichier; ?>
</a>
</strong></div>
</td>
<td>
<!-- On affiche le poids -->
<div align="center">
<?
echo round((ftp_size($conn_id,$RepDistant.$UnFichier)/1000),2)." Ko";
$TailleTotale=$TailleTotale+ftp_size($conn_id,$RepDistant.$UnFichier);
?>
</div>
</td>
<td>
<!-- On affiche une image qui servira à supprimer le fichier -->
<div align="center">
<img style="cursor:pointer;"
onClick="Javascript:document.suppress.Supprim.value='<? echo $UnFichier; ?>';document.suppress.submit();"
src="images/valider.gif" width="20" height="18" border="0">
</div>
</td>
</tr>
<?
}
?>
<tr>
<td width="14%"><div align="right"></div></td>
<td width="68%"><div align="right">Total : </div></td>
<!-- On affiche le poids total stocké dans $TailleTotale et on le convertir en Ko -->
<td width="13%"><div align="center"><? echo round(($TailleTotale/1000),2)." Ko" ?></div></td>
<td width="5%"></td>
</tr>
<tr>
<td width="14%"><div align="right"></div></td>
<td width="68%"><div align="right">Espace disponible :</div></td>
<!-- Une petite soustraction et on a le poids restant, que l'on convertir aussi en Ko -->
<td width="13%"><div align="center"><? echo round((($PoidsMax-$TailleTotale)/1000),2)." Ko" ?></div></td>
<td width="5%"></td>
</tr>
</table>
</p>
<br>
<!-- On ne permet l'upload que si l'utilisateur n'a pas déjà atteint son quota max. -->
<? if ($TailleTotale<$PoidsMax){ ?>
<!-- Le poids maximal n'est aps dépassé, on affiche le formulaire d'envoi -->
<div id="FormFichiers">
<p>
<!-- Le bouton renvoye à la fonction javascript pour récupérer le nom du fichier -->
<input name="submit1" type="button" id="submit12" value="Transférer" onClick="Envoyer();">
</p>
<form name="LeForm" id="LeForm" action="uploads2.php" enctype="multipart/form-data" method="post">
<div id="LesChamps">
<input name="File1" type="hidden" id="File1">
<input NAME="Champ1" TYPE="file" id="Champ1" onChange="AjoutChamps(this.Nb);" size="60"><br>
<!-- C'est ici que seront créés nos champs supplémentaires -->
</div>
</form>
</div>
<!-- On affiche le nombre max de fichier transférables simultanément -->
<div align="center">
<p>Le nombre de fichier est limité à 10 à la fois. </p>
</div>
<div align="center"><br>
<? }else{ ?>
<!-- On informe que le poids maximal a été dépassé -->
Vous avec dépassé le poids de stockage maximal autorisé.
Liberez de la mémoire en supprimant des fichiers pour pouvoir en placer d'autres.
<? } ?>
</div>
<form action="uploads2.php" method="post" name="suppress" target="_self" id="suppress">
<input name="Supprim" type="hidden" id="Supprim">
</form>
</body>
</html>
alors j'ai deux erreurs:
1- WAMP5 et EsyPHP ne sont pas pareils, car avec wamp, j'ai plein d'erreurs alors qu'avec Easy j'en ai ... moins!
2- Sous Easy une fois le code configuré correctement, j'obtiens quelques erreurs:
Notice: Undefined index: Supprim in
f:\uploads2.php on line
159Notice: Undefined index: File1 in
f:\uploads2.php on line
164
De plus les fichiers n'apparaissent pas sur mon serveur et leur nom est tronqué
On ne peut pas non plus supprimer un fichier,
J'ai beu chercher je ne trouve pas
Merci pour toute aide
Jipe32
PS: pour le test
ICI (mises à jour toutes les minutes environ car je le modifie un peu tout le temps pour essayer de le faire marcher
Venez chasser les vampires, cliquez ici: www.bitefight.fr