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
[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010TECHDAYS PARIS 2010 : PLAN DE MIGRATION VERS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Arnault Nouvel et Antoine Dongois Le processus à prendre : Apprendre (découvrir la plateforme) Préparer (documenter l'historique et choisir la méthode de MAJ) Test (Test de MAJ) Implémenter (Effectuer la MAJ) Valid...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOURTECHDAYS PARIS 2010 : LA PLEINIèRE DU SECOND JOUR par ROMELARD Fabrice
Après un retour sur l'histoire des TechDays de Paris et le fait que ce soit le plus gros event MS au monde (du fait de sa gratuité), le président de MS France (Eric Boustoullier) a fait une présentation de la vision Microsoft pour les années à venir...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|