1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
<?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 = 'C:\Program Files\EasyPHP1-8\www\Phototheque_sp\photos\';
/* taille maximale en octets du fichier à uploader*/
$file_max_size = 1000000;
/* 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['photo']['error'] == UPLOAD_ERR_OK) {
// vérifie la taille en octets
if ($_FILES['photo']['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['photo']['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['photo']['name']); */
// déplace le fichier uploadé du répertoire temporaire
// vers les répertoire/fichier destination spécifiés
if (move_uploaded_file($_FILES['photo']['tmp_name'],
$destination_dir.DIRECTORY_SEPARATOR.$destination_file)) {
echo '<h6>Fichier valide et uploadé correctement.</h6>';
} else { // error sur move_uploaded_file
echo '<h6>Le fichier n\'a pas été uploadé correctement !</h6>';
}
} else { // pas d'extension ou mauvaise extension
echo '<h6>Mauvaise extension !</h6>';
}
} else { // Taille maximale dépassée
echo '<h6>Fichier trop volumineux !</h6>';
}
} else { // Erreur lors de l'upload
switch ($_FILES['photo']['error']){
case UPLOAD_ERR_INI_SIZE:
echo '<h6>Le fichier uploadé dépasse la valeur spécifiée
pour upload_max_filesize dans php.ini.</h6>';
break;
case UPLOAD_ERR_FORM_SIZE:
echo '<h6>Le fichier uploadé dépasse la valeur spécifiée
pour MAX_FILE_SIZE dans le formulaire d\'upload.</h6>';
break;
case UPLOAD_ERR_PARTIAL:
echo '<h6>Le fichier n\'a été que partiellement uploadé.</h6>';
break;
default:
echo '<h6>Aucun fichier n\'a été uploadé.</h6>';
} // switch
}
} else { // aucun fichier reçu
echo '<h6>Pas de fichier recu</h6>';
}
} // fin de réception de formulaire
?> |
Partager