Accueil > > > UPLOAD - FLOPTWO
UPLOAD - FLOPTWO
Information sur la source
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>
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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 à 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é d'être clair dans ma requete ^^ J'aimerais que lorsque un utilisateur choisi un fichier à 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 à 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 à tous, voilà j'ai un petit souci pour un upload d'image.//Fonction d'upload$nom_fichier = $_FILES['userfile']['name'];$tmp_fichier
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|