Script d'upload de fichier => Rien ne se passe
Posté : 04 avr. 2006, 12:47
Bonjour,
Je suis passé sur le site ou j'ai lu le tutorial, j'ai fait une page test.php pour m'assurer avant de l'integrer à mon formulaire avoir bien compris le principe.
Malheureusement, ce n'est pas le premier script que je récupere mais le votre est bien plus complet mais il y a toujours la même erreur.
Le fichier visiblement s'upload puisque la barre de chargement augmente et qu'a la fin du chargement , la page m'indique terminé mais je n'ai aucun message m'infirmant que le fichier a bien été uploadé (1er souci) mais surtout le fichier n'est pas dans le dossier et je ne vois vraiment pas ou le probléme.
Free autorise bien l'upload, je l'ai verifié par le script phpinfo() et j'ai mis bien le repertoire upload en ecriture et lecture pour tout le monde, pour les fichiers et sous dossiers.
Je vous joint le code :
Je précise que la seule chose que j'ai modifier est le fait d'avoir supprimé le action="page_receptrice.php" du formulaire pour que les erreus s'affichent sur la meme page et non sur une autre.
Comment s'assurer que le CHMOD est bien pris en compte car j'utilise FlashFTP et j'ai beau mettre les droit d'ecritures , lorsque je refais proprietes, il me remet les paramatres par défaut soit 700.
Merci.
Je suis passé sur le site ou j'ai lu le tutorial, j'ai fait une page test.php pour m'assurer avant de l'integrer à mon formulaire avoir bien compris le principe.
Malheureusement, ce n'est pas le premier script que je récupere mais le votre est bien plus complet mais il y a toujours la même erreur.
Le fichier visiblement s'upload puisque la barre de chargement augmente et qu'a la fin du chargement , la page m'indique terminé mais je n'ai aucun message m'infirmant que le fichier a bien été uploadé (1er souci) mais surtout le fichier n'est pas dans le dossier et je ne vois vraiment pas ou le probléme.
Free autorise bien l'upload, je l'ai verifié par le script phpinfo() et j'ai mis bien le repertoire upload en ecriture et lecture pour tout le monde, pour les fichiers et sous dossiers.
Je vous joint le code :
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Title here!</title>
</head>
<body>
<form name="form" method="post" enctype="multipart/form-data">
<!-- Taille maximale en octets. Non sécurisé car facilement contournable !! -->
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Veuillez sélectionner un fichier à uploader:
<input type="file" name="aFile" />
<input type="submit" name="submitFile" value="Envoyer le fichier" />
</form>
<?php
/**
* function formatFileName
* @access public
* @param string - nom de fichier à formater
* @param int - longueur maximale autorisée pour le nom de fichier
* @return string - nom de fichier formaté
* @desc Tronque éventuellement le nom de fichier, le convertit en minuscules et
* y élimine les caractères potentiellement dangereux.
*/
function formatFileName($aFileName, $aMaxLength = 50) {
$aFileName = strToLower(subStr($aFileName, 0, $aMaxLength));
$aFileName = ereg_replace('[^a-zA-Z0-9,._\+\()\-]', '_', $aFileName);
return $aFileName;
} // end of function formatFileName() /2
/* PARAMETRES DE CONFIGURATION DU SCRIPT
*/
// chemin d'accès au répertoire d'upload (vers où le fichier uploadé temporaire sera transféré)
// ce répertoire doit EXISTER et être ACCESSIBLE EN ECRITURE !!
$destination_dir = '/var/www/free.fr/5/e/borderterrier/upload';
// taille maximale en octets du fichier à uploader
$file_max_size = 10000;
// extensions de fichiers autorisées
$authorized_extensions = array('jpg', 'gif');
/* TRAITEMENT PRINCIPAL
*/
// vérifie l'existence du répertoire de destination
if (!is_dir($destination_dir)) {
echo 'Veuillez indiquer un répertoire destination correct !';
die();
}
// vérifie que répertoire de destination a des droits en écriture
if (!is_writeable($destination_dir)) {
echo 'Veuillez spécifier des droits en écriture pour le répertoire destination !';
die();
}
// réception du formulaire
if (isSet($_POST['submitFile'])) {
// vérifie qu'un fichier a bien été soumis
if (isSet($_FILES) && is_array($_FILES)) {
// pas d'erreur lors de l'upload
if ($_FILES['aFile']['error'] == UPLOAD_ERR_OK) {
// vérifie la taille en octets
if ($_FILES['aFile']['size'] <= $file_max_size) {
// vérifie l'extension du fichier recu
// il est aussi possible (et sans doute mieux) de se baser sur $_FILES['aFile']['type']
// qui retourne le type MIME correspondant (par exemple: image/pjpeg)
$lastPos = strRChr($_FILES['aFile']['name'], ".");
if ($lastPos !== false && in_array(strToLower(subStr($lastPos, 1)), $authorized_extensions)) {
// définit un nom de fichier destination unique à partir du nom du fichier original formaté
$destination_file = time().formatFileName($_FILES['aFile']['name']);
// déplace le fichier uploadé du répertoire temporaire
// vers les répertoire/fichier destination spécifiés
if (move_uploaded_file($_FILES['aFile']['tmp_name'],
$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) {
echo 'Fichier valide et uploadé correctement.';
} else { // error sur move_uploaded_file
echo 'Le fichier n\'a pas été uploadé correctement !';
}
} else { // pas d'extension ou mauvaise extension
echo 'Mauvaise extension !';
}
} else { // Taille maximale dépassée
echo 'Fichier trop volumineux !';
}
} else { // Erreur lors de l'upload
switch ($_FILES['aFile']['error']){
case UPLOAD_ERR_INI_SIZE:
echo 'Le fichier uploadé dépasse la valeur spécifiée
pour upload_max_filesize dans php.ini.';
break;
case UPLOAD_ERR_FORM_SIZE:
echo 'Le fichier uploadé dépasse la valeur spécifiée
pour MAX_FILE_SIZE dans le formulaire d\'upload.';
break;
case UPLOAD_ERR_PARTIAL:
echo 'Le fichier n\'a été que partiellement uploadé.';
break;
default:
echo 'Aucun fichier n\'a été uploadé.';
} // switch
}
} else { // aucun fichier reçu
echo 'Pas de fichier recu';
}
} // fin de réception de formulaire
?>
</body>
</html>
Vous pouvez essayer sur la page borderterrier.free.fr/test.phpJe précise que la seule chose que j'ai modifier est le fait d'avoir supprimé le action="page_receptrice.php" du formulaire pour que les erreus s'affichent sur la meme page et non sur une autre.
Comment s'assurer que le CHMOD est bien pris en compte car j'utilise FlashFTP et j'ai beau mettre les droit d'ecritures , lorsque je refais proprietes, il me remet les paramatres par défaut soit 700.
Merci.