<?php// ############################################################ //
// Script pour Upload de fichier quelconque sur un serveur //
// ############################################################ //
// Infos : //
// ------- //
// Auteur : Fabien Guillod //
// Email de l'auteur : f_guillod@bluewin.ch //
// Date de création : 8 mars 2005 //
// Dernière modification : 10 mars 2005 //
// Version : 1.0.0 //
// ############################################################ //
// Fonctionnement : //
// ---------------- //
// 1. Test si l'utilisateur a choisi un fichier //
// 2. Test si le fichier choisi est valide (si taille <> 0) //
// 3. Test si le taille du fichier est inférieure à la taille //
// max //
// 4. Test si l'extension est autorisée. //
// ############################################################ //
// Paramètrage : //
// ------------- //
// Ce script peut facilement être paramètré selon les besoins. //
// Le paramètrage se fait principalement par la définition des //
// variables globales. Voici les différentes variables : //
// //
// - $DESTINATION_FOLDER : contient le répertoire dans lequel //
// le fichier sera uploadé. Il est par défaut récupéré du //
// formulaire, mais peut très bien être remplacé par un url //
// en dur. //
// //
// - $MAX_SIZE : spécifie la taille maximale que le fichier à //
// uploader peut avoir. Attention, le taille est spécifiée //
// en octets. //
// //
// - $RETURN_LINK : Récupère automatiquement l'url de la page //
// web qui appelle ce script. Ce lien sert à créer des liens //
// de retour, qui sont toujours utiles. //
// //
// - $AUTH_EXT : Ce tableau contient toutes les extensions qui //
// peuvent être uploadées. On peut en rajouter ou en //
// supprimer si besoin est. //
// ############################################################ //
// ############################################################ //
// Définition des variable globales, modifiables à volonté //
// ############################################################ //
// Récupération du dossier dans lequel le fichier sera uploadé //
$DESTINATION_FOLDER = $_POST["c:/wamp/www/upload"]; //
// Taille maximale de fichier, valeur en bytes //
$MAX_SIZE = 3000000; //
// Récupération de l'url de retour //
$RETURN_LINK = $_SERVER['HTTP_REFERER']; //
// Définition des extensions de fichier autorisées (avec le ".")//
$AUTH_EXT = array(".txt", ".doc", ".pdf", ".jpg", ".ppt", ".xls", //
".bmp", ".gif", ".zip", ".JPG", ".ico"); //
// ############################################################ //
// Fonction permettant de créer un lien de retour automatique
function createReturnLink(){
global $RETURN_LINK;
echo "
<a href='".$RETURN_LINK."'>Retour vers la page de transfert
</a><br>";
}
// Fonction permettant de vérifier si l'extension du fichier est
// autorisée.
function isExtAuthorized($ext){
global $AUTH_EXT;
if(in_array($ext, $AUTH_EXT)){
return true;
}else{
return false;
}
}
// On vérifie que le champs contenant le chemin du fichier soit
// bien rempli.
if(!empty($_FILES["file"]["name"])){
// Nom du fichier choisi:
$nomFichier = $_FILES["file"]["name"] ;
// Nom temporaire sur le serveur:
$nomTemporaire = $_FILES["file"]["tmp_name"] ;
// Type du fichier choisi:
$typeFichier = $_FILES["file"]["type"] ;
// Poids en octets du fichier choisit:
$poidsFichier = $_FILES["file"]["size"] ;
// Code de l'erreur si jamais il y en a une:
$codeErreur = $_FILES["file"]["error"] ;
// Extension du fichier
$extension = strrchr($nomFichier, ".");
// Si le poids du fichier est de 0 bytes, le fichier est
// invalide (ou le chemin incorrect) => message d'erreur
// sinon, le script continue.
if($poidsFichier <> 0){
// Si la taille du fichier est supérieure à la taille
// maximum spécifiée => message d'erreur
if($poidsFichier
< $MAX_SIZE){ // On teste ensuite si le fichier a une extension autorisée
if(isExtAuthorized($extension)){
// Ensuite, on copie le fichier uploadé ou bon nous semble.
$uploadOk = move_uploaded_file($nomTemporaire, $DESTINATION_FOLDER.$nomFichier);
if($uploadOk){
echo("Le transfert a réussi !<br><br>");
echo(createReturnLink());
}else{
echo("Le transfert a échoué !<br><br>");
echo(createReturnLink());
}
}else{
echo ("Les fichiers avec l'extension $extension ne peuvent pas être transférer !<br>");
echo (createReturnLink()."<br>");
}
}else{
// Taille maxi
$tailleKo = $MAX_SIZE / 3000;
echo("Vous ne pouvez pas transférer de fichiers dont la taille est supérieure à : $tailleKo Ko.<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Le fichier choisi est invalide !<br>");
echo (createReturnLink()."<br>");
}
}else{
echo("Vous n'avez pas choisi de fichier !<br>");
echo (createReturnLink()."<br>");
}
?>