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
| <?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 = './up/';
// taille maximale en octets du fichier à uploader
$file_max_size = 100;
// extensions de fichiers autorisées
$authorized_extensions = array('jpg','gif','jpeg','bmp','doc','docx','xls','xslx','pdf','zip','rar','jar','ppt','pptx','pps','ppsx','exe','msi');
/* 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 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
{ // 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
?> |
Partager