|
|
|
|
Bonjour,
j'ai installé un script d'upload de fichier sur mon serveur ftp sur mon site, donc, je le test, j'upload
un fichier, le message de confirmation de mon upload apparait, merveilleux me dis-je ... Je vais
sur mon serveur ftp, pour vérifier, et je ne trouve pas mon fichier !!!
J'epère avoir une réponse trés rapidement, merci d'avance : voila le script
<?php
error_reporting(E_ALL ^ E_NOTICE);
/* Variables */
$_AxEVAR[FILEMAXSIZE] = 10000000; // la taille maximum de fichier -> en byte(0 = Illimité)
$_AxEVAR[FILETYPE] = "STK|PIV|TXT|GIF|JPG|JPEG|MPEG|MP3|BMP|AVI"; // les types des fichiers a uploadé
$_AxEVAR[LOADTO] = "upload/"; // le dossier ou le script va uploader les fichiers
/* Afficher le formulaire */
if(empty($AxEVAR[FILENAME])){
print("<div align=\"center\">\n");
print("<form method=\"post\" action=\"$PHP_SELF\">\n");
print("<table border=0 cellpadding=0 cellsepacing=0 width=\"60%\">\n\n");
print("<tr><td>Fichier à uploader :</td>\n");
print("<td><input type=\"file\" name=\"AxEVAR[FILENAME]\" size=30></td>\n");
print("<td><input type=\"submit\" value=\"Uploader !\"></td></tr>\n\n");
print("</table>\n");
print("</form>\n");
print("</div>\n");
}
/* Le script */
if(IsSet($AxEVAR[FILENAME])){
/* La taille de fichier a uploadé */
$AxEVAR[FILESIZE]=filesize($AxEVAR[FILENAME]);
/* Vérifier la taille */
if( ($_AxEVAR[FILEMAXSIZE] == 0) or ($AxEVAR[FILESIZE] <= $_AxEVAR[FILEMAXSIZE]) ){
/* Séléctioner les types ajouter */
$AxEFTC=substr_count($_AxEVAR[FILETYPE], "|");
/* Séléctioner le type de fichier */
$AxEFTUP=explode(".", $AxEVAR[FILENAME]);
$AxEFTUP=strtoupper($AxEFTUP[1]);
for($i=0;$i<=$AxEFTC;$i++){
$AxETYPE=explode("|", $_AxEVAR[FILETYPE]);
/* Vérifier le type */
if($AxEFTUP == $AxETYPE[$i]){
/* Séléctioner le nom de fichier */
$AxEVAR[FILENEWNAME]=eregi_replace("[\]", "|", $AxEVAR[FILENAME]);
$AxEFNT=substr_count($AxEVAR[FILENEWNAME], "||");
for($x=0;$x<=$AxEFNT;$x++){
$AxEFNUP=explode("||", $AxEVAR[FILENEWNAME]);
$X=$x;
}
/* Uploader le fichier */
if(@copy($AxEVAR[FILENAME], $_AxEVAR[LOADTO]."/".$AxEFNUP[$X])){
echo "Fichier [$AxEFNUP[$X]] bien uploader";
}
else{
echo "Impossible d'uploader le fichier !";
}
unset($Error);
exit();
}
else{
echo "Type de fichier invalide [.$AxEFTUP]";
}
}
}
else{
echo "Le fichier a dépassé la taille maximum";
}
}
?>
Configuration: Linux Firefox 2.0
Je crois qu'il faut ajouter l'attribut enctype="multipart/form-data" quand tu veux faire de l'upload. A savoir aussi, tu as la variable $_FILES[] qui contient toutes les infos de fichiers transmis dans ton formulaire ($_FILES['size'] pour la taille, $_FILES['name'] pour le nom du fichier, $_FILES['tmp_name'] pour le chemin d'accès temporaire au fichier, $_FILES['type'] pour obtenir son type MIME etc...). Quand ton fichier est téléchargé sur ton serveur, il est placé dans un répertoire temporaire pour les divers traitement que tu pourrais souhaiter faire dessus. Pour le garder, il faut le sauvegarder autre part. Tu as la fonction move_uploaded() qui fait ça (ou un nom dans le genre) Au commencement, nous sommes tous des noobs... |
Pour baba_cool : oui, TOUT est en 777, mon fichier d'upload et mon repertoire d'upload !
|
Ok, voilà un script pour uploader un fichier vers un serveur :
<?php
$maxSize = 10000000; // Taille maximale autorisée
$uploadDir = "mon_dossier_d_upload";
$typesOk = array(les, extensions, autorisées, ...);
// Formulaire
echo "<form action=\"$PHP_SELF\" method=\"post\" enctype=\"multipart/form-data\">";
echo "Fichier : <input type=\"file\" name=\"uploadedFile\" />";
echo "<input type=\"submit\" value=\"Uploader\"/>"
echo "</form>";
// Fin du formulaire
// On vérifie qu'on a bien un fichier transmis
if(isset($_FILES['filename'])){
// On vérifie qu'il ne dépasse pas la taille maximale autorisée
if($_FILES['size'] <= $maxSize){
// Vérification du type
$elem = explode(".", $_FILES['filename']['name']);
$nb = count($elem);
if(in_array($elem[$n-1], $typesOk)){
// On transfère le fichier vers le dossier
if(move_uploaded($_FILES['filename']['tmp_name'], $uploadDir."/".$_FILES['filename']['name'])) {
echo "Transfert réalisé : $uploadDir/".$_FILES['filename']['name'];
} else {
echo "Le transfert n'a pas pu s'effectuer<br />";
}
} else {
echo "Ce type de fichier n'est pas autorisé"
}
} else {
echo "Le fichier est trop gros<br />";
}
}
?>
Voilà, ce script devrait marcher pour uploader un fichier vers ton serveur (je ne l'ai pas testé mais ça devrait être ok). Par contre, si ton serveur où tu exécute ce script est différent du serveur où tu souhaites transférer ton fichier, ça ne marchera pas de cette façon. Au commencement, nous sommes tous des noobs... |
Sa me fait pareil, tout marche, pas de message d'erreur, mais pas d'upload ... (tu avait oublié 2 ";" ;)
<?php
$maxSize = 10000000; // Taille maximale autorisée
$uploadDir = "upload/";
$typesOk = array(piv, stk, gif, bmp, jpeg, jpg, pgn, mp3, mpeg, avi);
// Formulaire
echo "<form action=\"$PHP_SELF\" method=\"post\" enctype=\"multipart/form-data\">";
echo "Fichier : <input type=\"file\" name=\"uploadedFile\" />";
echo "<input type=\"submit\" value=\"Uploader\"/>";
echo "</form>";
// Fin du formulaire
// On vérifie qu'on a bien un fichier transmis
if(isset($_FILES['filename'])){
// On vérifie qu'il ne dépasse pas la taille maximale autorisée
if($_FILES['size'] <= $maxSize){
// Vérification du type
$elem = explode(".", $_FILES['filename']['name']);
$nb = count($elem);
if(in_array($elem[$n-1], $typesOk)){
// On transfère le fichier vers le dossier
if(move_uploaded($_FILES['filename']['tmp_name'], $uploadDir."/".$_FILES['filename']['name'])) {
echo "Transfert réalisé : $uploadDir/".$_FILES['filename']['name'];
} else {
echo "Le transfert n'a pas pu s'effectuer<br />";
}
} else {
echo "Ce type de fichier n'est pas autorisé";
}
} else {
echo "Le fichier est trop gros<br />";
}
}
?>
j'ai un hébergement mutualisé ! |