begin process at 2010 02 09 22:29:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > UPLOAD - FLOPTWO

UPLOAD - FLOPTWO


 Information sur la source

Note :
9,38 / 10 - par 8 personnes
9,38 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Formulaires Classé sous :upload, formulaire, fonction, fichier Niveau :Débutant Date de création :21/06/2006 Vu / téléchargé :11 843 / 1 613

Auteur : floptwo

Ecrire un message privé
Site perso
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Upload - floptwo :

Il s'agit d'un script qui permet d'uploader des fichiers sur son serveur via un formulaire.
Sous la forme d'une simple fonction, il permet d'envoyer le fichier selectionné dans un dossier spécifique, de limiter le poids des fichiers à envoyer, si l'option est activée, renommer le fichier envoyer s'il en existe déjà un du même nom mais de poids différent. (si "fichier.ext" existe il sera renommer : "fichier(1).ext")

Script réalisépar floptwo (floptwo@gmail.com)

Source

  • <?php
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * Upload - floptwo :
  • * Il s'agit d'un script qui permet d'uploader des
  • * fichiers sur son serveur via un formulaire.
  • * Sous la forme d'une simple fonction, il permet
  • * d'envoyer le fichier selectionné dans un dossier
  • * spécifique, de limiter le poids des fichiers à
  • * envoyer, si l'option est activée, renommer le
  • * fichier envoyer s'il en existe déjà un du même nom
  • * mais de poids différent.
  • * (si "fichier.ext" existe il sera renommer : "fichier(1).ext")
  • *
  • * Script réalisépar floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • function upload ($http_post_file, $file_folder, $file_maxSize, $file_autoRename)
  • {
  • // Ici on déclare queleque variables qui nous serons utiles
  • /* $upload : Après tous les tests nous permettra de savoir
  • * si on upload ou pas. Par défaut il est faux (false) pour
  • * éviter un : ...else {$upload = false;} et éviter un eventuel
  • * "error Variable undefinded...". */
  • $upload = false;
  • /* $_result : Variable qui contient un numero qui sert de
  • * code d'erreur. Elle nous permettra d'afficher des
  • * messages précis définissant les erreurs.
  • * Par défaut 2 pour éviter un : ...else {$_result = 2;}
  • * et éviter un eventuel "error Variable undefinded...".*/
  • $_result = 2;
  • /* $file_newName : On initialise la variable qui
  • * contiendra le nouveau nom du fichier s'il à dû
  • * être renommé et éviter un eventuel
  • * "error Variable undefinded...".*/
  • $file_newName = '';
  • // Si l'adresse d'un fichier a bien été saisie
  • if (!empty($http_post_file) && !empty($http_post_file['name']))
  • {
  • /* $http_post_file correspond à $HTTP_POST_FILES['fichier']
  • * qui est un tableau contenant les information sur le fichier posté. */
  • $file_name = $http_post_file['name']; // nom du fichier
  • // $file_type = $http_post_file['type']; // type du fichier pourrai servir a un filtre pour n'envoeyr qu'un certain type de fichier
  • $file_size = $http_post_file['size']; // poids du fichier
  • $file_tmp = $http_post_file['tmp_name']; // adresse qu fichier temporaie sur le serveur
  • $file_adresse = $file_folder.'/'.$file_name; // location du fichier
  • // Si le poids du fichier est inférieur ou égal au poids autorisé
  • if ($file_size <= $file_maxSize)
  • {
  • // Si un fichier du meme nom n'existe pas deja
  • if (!file_exists ($file_adresse))
  • {
  • $file_newName = $file_name; // il gardera alors le nom de départ
  • $upload = true; // tout est ok on peut uploader
  • $_result = 0; // Code pour un envoie simple et effectuer
  • }
  • // Sinon Si le fichier existe et qu'on autorise le renommage automatique
  • elseif (file_exists ($file_adresse) && $file_autoRename)
  • {
  • // A l'aide d'expressions régulières on extrait :
  • $expR = eregi("^(.*)[.](.*)$" , $file_name , $expRa); // le nom et l'extension
  • $expR = eregi("^(.*)[(]([0-9]*)[)]$" , $expRa[1] , $expRb); //verifie si le fichier ne se termine pas déja par (x)
  • $file_num = $expRb[2]; // le numero deja affecté. Le x dans ficiher(x).ext
  • $exist_file_info = stat ($adress_file); //relève des information sur le fichier déja existant
  • $exist_file_size = $file_info[7]; // relève le poids en octets
  • // Si le fichier à envoyer n'a pas le même poids que le fichier déjà présent et du même nom
  • if ($exist_file_size != $file_size)
  • {
  • // si le fichier a deja un compteur x >>> fichier(x).ext
  • if (!empty($expRb[2]))
  • {
  • $file_num++; // On incremente le compteur
  • $file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
  • // Tant qu'il y a un fichier du nouveau nom choisi on incrémente
  • while (file_exists($file_folder.'/'.$file_newName))
  • {
  • $file_num++;
  • $file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
  • }
  • }
  • // si le fichier n'a pas encor de compteur on lui en creer un
  • else
  • {
  • $file_newName = $expRa[1].'(1).'.$expRa[2];
  • // Tant qu'il existera un fichier avec le compteur qu'on souhaite lui attribuer on incrémente le compteur
  • while (file_exists($file_folder.'/'.$file_newName))
  • {
  • $file_num++;
  • $file_newName = $expRa[1].'('.$file_num .').'.$expRa[2];
  • }
  • }
  • $upload = true; // tout est ok on peut uploader
  • $_result = 1; // Code pour un envoie dans le cas d'un fichier déja existant et renommer
  • }
  • // Sinon, si le fichier à envoyer a le même poids que le fichier déjà présent et du même nom
  • else
  • {
  • // Pas de $upload = true; le fichier existe déjà
  • $file_newName = $file_name; // il gardera alors le nom de départ
  • $_result = 5; // Code pour un fichier existant déjà
  • }
  • }
  • // Sinon, si le fichier existe déjà mais que l'on n'autorise pas le renommage automatique
  • else
  • {
  • $_result = 4; // Code erreur d'un fichier déjà existant
  • }
  • }
  • // Sinon, si le poids du fichier est supérieur au poids autorisé
  • else
  • {
  • $_result = 3; // Code erreur d'un poids fichier supérieur au poids autorisé
  • }
  • }
  • // Si tout est ok et que le $upload = true
  • if ($upload)
  • {
  • // Si la copie échoue quand meme
  • if (!copy($file_tmp , $file_folder.'/'.$file_newName))
  • {
  • $_result = 6; // Code erreur
  • }
  • }
  • // Dans un tableau on met le code obtenu et le nouveau nom du fichier
  • $upload_result = array($_result , $file_newName);
  • return $upload_result; //on retourne le tableau
  • }
  • ?>
  • <html>
  • <head>
  • <title>upload - floptwo</title>
  • </head>
  • <body>
  • <form enctype="multipart/form-data" action="" method="post">
  • <input type="hidden" name="MAX_FILE_SIZE" value="5000000">
  • Fichier : <input name="fichier" type="file"> <input type="submit" value="Envoyer">
  • </form>
  • <br/>
  • <?php
  • if (isset($HTTP_POST_FILES['fichier']))
  • {
  • $file_folder = '.';
  • $file_name = $HTTP_POST_FILES['fichier']['name'];
  • // On récupère le tableau contenant le resultat de l'upload
  • $upload_result = upload ($HTTP_POST_FILES['fichier'], $file_folder , $_POST["MAX_FILE_SIZE"], true);
  • // Affichage des erreur corespondantes au code obtenu
  • switch($upload_result [0])
  • {
  • case '0' :
  • echo 'Le fichier "' , $upload_result [1] , '" a bien été envoyé.'; break;
  • case '1' :
  • echo 'Un fichier nommé "' , $file_name , '" existait déjà. Le fichier a été renommé "' , $upload_result [1] , '" puis envoyé.'; break;
  • case '2' :
  • echo 'Aucun fichier n\'a été soumis.'; break;
  • case '3' :
  • echo 'Le fichier supérieur à la taille limite autorisée.'; break;
  • case '4' :
  • echo 'Un fichier nommé "' , $upload_result [1] , '" existe déjà.'; break;
  • case '5' :
  • echo 'Un fichier identique nommé "' , $upload_result [1] , '" existe déjà.'; break;
  • case '6' :
  • echo 'Une erreur inconnue est survenue.'; break;
  • }
  • }
  • /* * * * * * * * * * * * * * * * * * * * * * * * * * *
  • * script réalisé par floptwo (floptwo@gmail.com)
  • * * * * * * * * * * * * * * * * * * * * * * * * * * */
  • ?>
  • </body>
  • </html>
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * Upload - floptwo :
 *   Il s'agit d'un script qui permet d'uploader des
 *   fichiers sur son serveur via un formulaire.
 *   Sous la forme d'une simple fonction, il permet
 *   d'envoyer le fichier selectionné dans un dossier
 *   spécifique, de limiter le poids des fichiers à 
 *   envoyer, si l'option est activée, renommer le 
 *   fichier envoyer s'il en existe déjà un du même nom
 *   mais de poids différent. 
 *   (si "fichier.ext" existe il sera renommer : "fichier(1).ext")
 *
 *   Script réalisépar floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
function upload ($http_post_file, $file_folder, $file_maxSize, $file_autoRename)
{
	// Ici on déclare queleque variables qui nous serons utiles
	
	/* $upload : Après tous les tests nous permettra de savoir
	 * si on upload ou pas. Par défaut il est faux (false) pour
	 * éviter un : ...else {$upload = false;} et éviter un eventuel 
	 * "error  Variable undefinded...". */
	$upload = false; 
	
	/* $_result : Variable qui contient un numero qui sert de 
	 * code d'erreur. Elle nous permettra d'afficher des
	 * messages précis définissant les erreurs.
	 * Par défaut 2 pour éviter un : ...else {$_result = 2;}
	 * et éviter un eventuel "error  Variable undefinded...".*/
	$_result = 2;
	
	/* $file_newName : On initialise la variable qui
	 * contiendra le nouveau nom du fichier s'il à dû
	 * être renommé et éviter un eventuel 
	 * "error  Variable undefinded...".*/
	$file_newName = '';
	
	// Si l'adresse d'un fichier a bien été saisie
	if (!empty($http_post_file) && !empty($http_post_file['name']))
	{
		/* $http_post_file correspond à $HTTP_POST_FILES['fichier']
		 * qui est un tableau contenant les information sur le fichier posté. */
		$file_name = 	$http_post_file['name']; // nom du fichier
		// $file_type = 		$http_post_file['type']; // type du fichier pourrai servir a un filtre pour n'envoeyr qu'un certain type de fichier
		$file_size = 		$http_post_file['size']; // poids du fichier
		$file_tmp = 		$http_post_file['tmp_name']; // adresse qu fichier temporaie sur le serveur

		$file_adresse = $file_folder.'/'.$file_name; // location du fichier
		
		// Si le poids du fichier est inférieur ou égal au poids autorisé
		if ($file_size <= $file_maxSize) 
		{	
			// Si un fichier du meme nom n'existe pas deja
			if (!file_exists ($file_adresse)) 
			{
				$file_newName = $file_name; // il gardera alors le nom de départ
				$upload = true; // tout est ok on peut uploader
				$_result = 0; // Code pour un envoie simple et effectuer
			}
			// Sinon Si le fichier existe et qu'on autorise le renommage automatique
			elseif (file_exists ($file_adresse) && $file_autoRename)
			{
				// A l'aide d'expressions régulières on extrait :
				$expR = eregi("^(.*)[.](.*)$" , $file_name , $expRa); // le nom et l'extension
				$expR = eregi("^(.*)[(]([0-9]*)[)]$" , $expRa[1] , $expRb); //verifie si le fichier ne se termine pas déja par (x)
				$file_num = $expRb[2]; // le numero deja affecté. Le  x dans ficiher(x).ext
				
				$exist_file_info = stat ($adress_file); //relève des information sur le fichier déja existant
				$exist_file_size = $file_info[7]; // relève le poids en octets
				// Si le fichier à envoyer n'a pas le même poids que le fichier déjà présent et du même nom
				if ($exist_file_size != $file_size)
				{
					// si le fichier a deja un compteur x  >>> fichier(x).ext
					if (!empty($expRb[2]))
					{	
						$file_num++; // On incremente le compteur
						$file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
						// Tant qu'il y a un fichier du nouveau nom choisi on incrémente
						while (file_exists($file_folder.'/'.$file_newName))
						{
							$file_num++;
							$file_newName = $expRb[1].'('.$file_num .').'.$expRa[2];
						}		
					}
					// si le fichier n'a pas encor de compteur on lui en creer un
					else
					{
						$file_newName = $expRa[1].'(1).'.$expRa[2];
						// Tant qu'il existera un fichier avec le compteur qu'on souhaite lui attribuer on incrémente le compteur
						while (file_exists($file_folder.'/'.$file_newName))
						{
							$file_num++;
							$file_newName = $expRa[1].'('.$file_num .').'.$expRa[2];
						}
							
					}
					$upload = true; // tout est ok on peut uploader
					$_result = 1; // Code pour un envoie dans le cas d'un fichier déja existant et renommer
				}
				// Sinon, si le fichier à envoyer a le même poids que le fichier déjà présent et du même nom
				else
				{
					// Pas de $upload = true; le fichier existe déjà
					$file_newName = $file_name; // il gardera alors le nom de départ
					$_result = 5;  // Code pour un fichier existant déjà
				}
				
			}
			// Sinon, si le fichier existe déjà mais que l'on n'autorise pas le renommage automatique
			else
			{
				$_result = 4; // Code erreur d'un fichier déjà  existant
			}
			
		}
		// Sinon, si le poids du fichier est supérieur au poids autorisé
		else
		{
			$_result = 3; // Code erreur d'un poids fichier supérieur au poids autorisé
		}
		
	}
	
	// Si tout est ok et que le $upload = true
	if ($upload)
	{
		// Si la copie échoue quand meme
		if (!copy($file_tmp , $file_folder.'/'.$file_newName)) 
		{
			$_result = 6; // Code erreur 
		}
	}	
	
	// Dans un tableau on met le code obtenu et le nouveau nom du fichier
	$upload_result = array($_result , $file_newName);
	return $upload_result; //on retourne le tableau
}
?>
<html>
	<head>
		<title>upload - floptwo</title>
	</head>
	
	<body>
	
		<form enctype="multipart/form-data" action="" method="post">
			<input type="hidden" name="MAX_FILE_SIZE" value="5000000">
			Fichier : <input name="fichier" type="file"> <input type="submit" value="Envoyer">
		</form>
		<br/>
<?php
if (isset($HTTP_POST_FILES['fichier']))
{ 
	$file_folder =  '.';
	$file_name = $HTTP_POST_FILES['fichier']['name'];
	
	// On récupère le tableau contenant le resultat de l'upload
	$upload_result = upload ($HTTP_POST_FILES['fichier'], $file_folder , $_POST["MAX_FILE_SIZE"], true);
	
	// Affichage des erreur corespondantes au code obtenu
	switch($upload_result [0])
	{
		case '0' : 
			echo 'Le fichier "' , $upload_result [1] , '" a bien été envoyé.'; break;
			
		case '1' : 
			echo 'Un fichier nommé "' , $file_name , '" existait déjà. Le fichier a été renommé "' , $upload_result [1] , '" puis envoyé.'; break;
			
		case '2' : 
			echo 'Aucun fichier n\'a été soumis.'; break;
			
		case '3' : 
			echo 'Le fichier supérieur à la taille limite autorisée.'; break;
			
		case '4' : 
			echo 'Un fichier nommé "' , $upload_result [1]  , '" existe déjà.'; break;
			
		case '5' : 
			echo 'Un fichier identique nommé "' , $upload_result [1]  , '" existe déjà.'; break;
			
		case '6' : 
			echo 'Une erreur inconnue est survenue.'; break;
	}

}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * script réalisé par floptwo (floptwo@gmail.com)
 * * * * * * * * * * * * * * * * * * * * * * * * * * */
?>
	</body>
	
</html>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

CLASS MYSQL (FLOPTWO)
Source avec Zip Source avec une capture NUAGE DE MOTS OU TAG CLOUD-FLOPTWO
Source avec Zip NAVIGATION 404 - FLOPTWO
Source avec Zip Source avec une capture CALENDRIER - FLOPTWO

 Sources de la même categorie

TESTEUR DE REGEX par hornetbzz
Source avec Zip SE SOUVENIRE D'UN VISITEUR GRACE A UN COOKIE par MoulouD1993
Source avec Zip Source avec une capture CAPTCHA PHP SIMPLE par toutoos
Source avec Zip POSTER, AFFICHER, ... DES NEWS SUR VOTRE SITE par TORA38
CLASS DE CONTRÔLE DE FORMULAIRE par baxterio

 Sources en rapport avec celle ci

Source avec Zip DOWNLOAD+UPLOAD_TK par thekid06
Source avec Zip Source avec une capture UTILISATION DU COMPOSANT MULTIPOWUPLOAD par crazygogo
UPLOAD MULTIPLE OU SIMPLE DES FICHIERS par tex73
Source avec Zip Source avec une capture UPLOAD PLUSIEURS FICHIERS EN AJAX + FLASH+PHP par mnouzahir
Source avec Zip UPLOAD PHOTO, TEXTE,OU AUTRE DOCUMENT VIA MYSQL par plopinou

Commentaires et avis

Commentaire de malalam le 22/06/2006 08:28:31 administrateur CS

Hello,

il faudrait peut-être que tu revois comment on est censé uploader un fichier en PHP :
http://fr2.php.net/manual/fr/features.file-upload.php

Commentaire de Oziris le 06/09/2006 09:06:09

salut et merci pour ta source
petite question j'envoi toutes sorte de fichier cela fonctionne sans probleme c'est ceux que je recherche !
par contre comment faire pour ne pas limiter la taille du fichier que j'envoi ?
ou a quoi correspond en mega  value="5000000"> 5 mo c'est ca ?
pour que je puisse definir une autre taille
merci pour ta reponse

Commentaire de floptwo le 07/09/2006 14:38:40

La value="5000000" dans le name="MAX_FILE_SIZE" ermet de limiter la taille du fichier depuis le formulaire pour éviter qu'un fichier trop lourd soit envoyer et qu'il y ai une erreur au niveau du serveur. 5000000 = 5mo, oui !!

Commentaire de cherifnet2002 le 13/10/2006 04:57:46

Salut l'idée du script est bien!
mais 1 seul pb:
je ne trouve pas le fichier que j'ai uploader avec ton script avec un logiciel ftp (la command LIST n'affiche pas le fichier?!).

Bonne chance et merci !

Commentaire de romgnak le 10/11/2006 17:53:44

bonjour,

je m y connais pas trop en php. je voulai me servir de cette source pour pouvoir uploder un xml a la place d un autre. que dois je enlevé dans le code pour qu'il ne nomme pas le fichier avec une extension 0,1,2ect mais qu'il ecrase le fichier par le nouveau?

voila j espere etre clair

merci d avance

Commentaire de jacobis21 le 01/12/2006 17:53:45

Bonjour,
Merci pour ce script qui fonctonne très bien et c'est même le seul qui fonctionne sans renvoyer de messages d'erreur.

Commentaire de maxofiatpolski le 09/12/2006 03:18:01

Bravo pour cette source, c'est exactement ce que je cherchais !!!
Merci

Commentaire de bigjohn02tw le 02/02/2007 16:54:24

  Bonjour,

Merci bien pour cette source qui fonctionne correctment mais moi j'aimerais renommer tous les fichiers uploader en mescours(1).pdf, mescours(2).pdf, mescours(3).pdf,etc...
Si vous pouvez m'aider.

Merci

Commentaire de obiwan38 le 22/03/2007 15:11:19

# il permet
# * d'envoyer le fichier selectionné dans un dossier
# * spécifique

ou peut modifier le repertoire demande?
merci

Commentaire de onlyge le 01/05/2007 15:47:32

Bon boulot, le code semble fonctionner mais pas pour moi. Je n'arrive pas à cibler un dossier sur le serveur pour envoyer un dossier. Et est-il possible de limiter l'extension du fichier exemple un .zip?

Commentaire de fatimazahrazaidi le 08/06/2009 12:03:31

merciiiiiiii ca fonctionne bien

Commentaire de zoolians le 16/09/2009 19:11:59

Pour moi aussi ça fonctionne, merci beaucoup !

Par contre j'aurai aimé savoir comment faire pour, au contraire, écraser l'ancien fichier de même nom avec le nouveau fichier ...? J'ai essayé de bidouiller les attributs du fichier pour refuser le renommage automatique mais sans succés...
Quelqu'un saurai me guider svp ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Upload de fichier [ par whiteknight ] Bonjour,j'ai un problème avec la fonction suivante, elle marche correctement mais ne detecte pas tous les type de fichiers.Elle marche que pour le pre UPLOAD -> comment faire???? [ par attentio ] salut !!!! je voudrais savoir comment faire pour uploader un fichier.j'ai commencé quelques petites choses. en fait, j'ai un premier fichier nommé for upload et chemin d'accès [ par skmancuso ] Bonjour,Je suis en train d'écrire un formulaire qui propose diverses choses notemment la possibilité de browser le disque pour "uploader" un fichier q Upload par méthode GET [ par Blacknight91 ] Bl@cknightBonjour,Je voudrais uploader directement des fichiers sans passer par un formulaire. Est ce possible ?En fait l'url contiendrait directement fonction upload [ par Zebra1928 ] bonsoir à tousj le message suivant:Warning: copy(/home/www.monsite.de/lechemin/fichier.xls): failed to open stream: Aucun fichier ou répertoire de ce Upload d'une image sans formulaire [ par djangoboy ] Bonjour &#224; tous, Vous vous dites surement "encore un upload" mais c'est pas tout a fait pareil que les autre post. Imaginons qui j'ai une variabl Formulaire et upload [ par MATHIS49 ] Bonjour, je vais essay&#233; d'&#234;tre clair dans ma requete ^^ J'aimerais que lorsque un utilisateur choisi un fichier &#224; uploader sur une pag Formulaire html + php [ par jcheseaux ] Bonjour ! Voila mon problème, j'ai créer un formulaire HTML gérant l'upload de fichier. Le problème, c'est que lors de l'envoie des variables depuis m Upload de fichier par formulaire [ par stevo77 ] Salut &#224; tous, j'ai un probleme dans un script d'upload de formulaire: Des que j'essaye de charger un fichier plus gros que 2-3 mo, j'ai une erreu Gros problème d'upload d'image...encore un [ par kenru ] Bonjour &#224; tous, voil&#224; j'ai un petit souci pour un upload d'image.//Fonction d'upload$nom_fichier = $_FILES['userfile']['name'];$tmp_fichier


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,125 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales