Accueil > > > UPLOAD MULTIPLE PHP/JAVASCRIPT EN 36 LIGNES DE CODE
UPLOAD MULTIPLE PHP/JAVASCRIPT EN 36 LIGNES DE CODE
Information sur la source
Description
Upload multiple en... un peu plus que 36 lignes: 82, en fait. J'ai rajouté un contrôle du type Mime et de la taille du fichier. J'ai fait dans le simple. C'est la première source que je poste. Il existe déjà plein de solutions pour l'upload multiple, mais toutes celles que j'ai vues me prenaient la tête... Celle-ci fait tout ce qu'il faut en 36 (ou 37) lignes, et sans prendre la tête ! Testée sur IE8, FF, NN9.
Source
- <head><title>Upload multiple en (36) 82 lignes de code</title>
- <script type="text/javascript"><!--
- function ajouter()
- { var br = document.createElement('br'); // je crée une balise <br />
- var neo = document.createElement('input'); // je crée un élément <input>
- neo.setAttribute('name','srcfic[]'); // je donne à mon INPUT le nom du tableau
- neo.setAttribute('type','file'); // je précise qu'il est de type FILE
- neo.setAttribute('size','95'); // je précise sa taille
- var sortie = document.getElementById("aufront"); // je précise où placer mon INPUT
- sortie.appendChild(neo); // je le mets en place, ainsi qu'un retour à la ligne
- sortie.appendChild(br); }
- //--></script>
- </head>
- <body>
- <form enctype="multipart/form-data" action="#VersServeur" method="post" name="uplo">
- <input type="hidden" name="drapeau" id="drapeau" value="oui" />
- <div id="aufront"><label>Fichier(s) à envoyer vers le serveur :</label><br /><br />
- <input name="srcfic[]" type="file" size="95"><br> <!-- j'ai créé un tableau de fichiers à envoyer -->
- </div> <!-- script de Richard BACH http://www.valneandre.eu -->
- Vous pouvez ajouter des fichiers avant d'envoyer : <input type="button" value="Encore un ?" onclick="ajouter()" /><br />
- <input type="submit" value="Envoyer"></form>
- <div name="VersServeur" id="VersServeur">
- <?php
- $destin = "downloads"; // changer ceci par le nom du dossier destinataire souhaité
- if (isset($_POST["drapeau"]))
- { echo '<h2>Envoi des fichiers ...</h2>';
- //=====================================================================================================================
- for($x=0;$x<sizeof($_FILES["srcfic"]["name"]);$x++)
- { $nom = $_FILES['srcfic']['name'][$x];
- if ($_FILES['srcfic']['error'][$x] >0)
- {
- echo 'Erreur sur le fichier : ' . $_FILES['srcfic']['error'][$x] . "<br /><br />";
- }
- else
- {
- if (file_exists("$destin/$nom")) // si le fichier existe déjà, renommer l'ancien
- {
- $ancienfic = $nom . microtime() . ".old" ; // certitude de n'avoir pas 2 noms pareils
- rename("$destin/$nom","$destin/$ancienfic");
- echo "<br />Le fichier " . $nom . " existe déjà<br />L'ancien " . $nom . " sera renommé " . $ancienfic . "<br />";
- }
- $siz = round($_FILES['srcfic']['size'][$x] / 1024,2); // calcul de la taille en Ko
- $typ = $_FILES['srcfic']['type'][$x]; // examen du type MIME
- echo "Type : $typ<br />Taille : $siz Ko<br />";
- if($siz > 256) // si la taille du fichier est supérieure à 256 Ko
- {
- echo "Fichier "$nom" trop volumineux pour l'upload<br /><br />";
- }
- else // sinon, filtrer les types MIME admis avant d'uploader
- {
- switch ($typ)
- {
- case "image/gif":
- case "image/pjpeg":
- case "image/jpeg":
- case "image/x-png":
- case "image/png":
- case "image/tiff":
- case "image/bmp":
- if(move_uploaded_file($_FILES['srcfic']['tmp_name'][$x],"$destin/$nom")) // si tout s'est bien passé
- {
- echo "<strong>Le fichier "" . $_FILES['srcfic']['name'][$x] . "" a été correctement envoyé ";
- echo "dans le dossier "$destin/"</strong><br><br />";
- chmod("$destin/$nom",0644);
- }
- else // sinon (case restée vide, ou fichier pas passé...)
- { if ($nom=="") $nom = "Fichier_Inconnu";
- { echo "Désolé, je n'ai pas pu envoyer le fichier "$nom" dans le dossier "$destin/" !<br /><br />"; }
- }
- break;
- // par défaut: rejeter les fichiers autres qu'images
- default:echo "<br />Fichier "$nom" d'un type incorrect<br /><br />";break;
- } // fermeture de switch(type)
- } // fermeture de if(size>256) else...
- } // fermeture de if(error) else...
- } // fermeture de for(x=0;...)
- //=====================================================================================================================
- } // fermeture de if(isset...)
- ?>
- </div></body>
<head><title>Upload multiple en (36) 82 lignes de code</title>
<script type="text/javascript"><!--
function ajouter()
{ var br = document.createElement('br'); // je crée une balise <br />
var neo = document.createElement('input'); // je crée un élément <input>
neo.setAttribute('name','srcfic[]'); // je donne à mon INPUT le nom du tableau
neo.setAttribute('type','file'); // je précise qu'il est de type FILE
neo.setAttribute('size','95'); // je précise sa taille
var sortie = document.getElementById("aufront"); // je précise où placer mon INPUT
sortie.appendChild(neo); // je le mets en place, ainsi qu'un retour à la ligne
sortie.appendChild(br); }
//--></script>
</head>
<body>
<form enctype="multipart/form-data" action="#VersServeur" method="post" name="uplo">
<input type="hidden" name="drapeau" id="drapeau" value="oui" />
<div id="aufront"><label>Fichier(s) à envoyer vers le serveur :</label><br /><br />
<input name="srcfic[]" type="file" size="95"><br> <!-- j'ai créé un tableau de fichiers à envoyer -->
</div> <!-- script de Richard BACH http://www.valneandre.eu -->
Vous pouvez ajouter des fichiers avant d'envoyer : <input type="button" value="Encore un ?" onclick="ajouter()" /><br />
<input type="submit" value="Envoyer"></form>
<div name="VersServeur" id="VersServeur">
<?php
$destin = "downloads"; // changer ceci par le nom du dossier destinataire souhaité
if (isset($_POST["drapeau"]))
{ echo '<h2>Envoi des fichiers ...</h2>';
//=====================================================================================================================
for($x=0;$x<sizeof($_FILES["srcfic"]["name"]);$x++)
{ $nom = $_FILES['srcfic']['name'][$x];
if ($_FILES['srcfic']['error'][$x] >0)
{
echo 'Erreur sur le fichier : ' . $_FILES['srcfic']['error'][$x] . "<br /><br />";
}
else
{
if (file_exists("$destin/$nom")) // si le fichier existe déjà, renommer l'ancien
{
$ancienfic = $nom . microtime() . ".old" ; // certitude de n'avoir pas 2 noms pareils
rename("$destin/$nom","$destin/$ancienfic");
echo "<br />Le fichier " . $nom . " existe déjà<br />L'ancien " . $nom . " sera renommé " . $ancienfic . "<br />";
}
$siz = round($_FILES['srcfic']['size'][$x] / 1024,2); // calcul de la taille en Ko
$typ = $_FILES['srcfic']['type'][$x]; // examen du type MIME
echo "Type : $typ<br />Taille : $siz Ko<br />";
if($siz > 256) // si la taille du fichier est supérieure à 256 Ko
{
echo "Fichier "$nom" trop volumineux pour l'upload<br /><br />";
}
else // sinon, filtrer les types MIME admis avant d'uploader
{
switch ($typ)
{
case "image/gif":
case "image/pjpeg":
case "image/jpeg":
case "image/x-png":
case "image/png":
case "image/tiff":
case "image/bmp":
if(move_uploaded_file($_FILES['srcfic']['tmp_name'][$x],"$destin/$nom")) // si tout s'est bien passé
{
echo "<strong>Le fichier "" . $_FILES['srcfic']['name'][$x] . "" a été correctement envoyé ";
echo "dans le dossier "$destin/"</strong><br><br />";
chmod("$destin/$nom",0644);
}
else // sinon (case restée vide, ou fichier pas passé...)
{ if ($nom=="") $nom = "Fichier_Inconnu";
{ echo "Désolé, je n'ai pas pu envoyer le fichier "$nom" dans le dossier "$destin/" !<br /><br />"; }
}
break;
// par défaut: rejeter les fichiers autres qu'images
default:echo "<br />Fichier "$nom" d'un type incorrect<br /><br />";break;
} // fermeture de switch(type)
} // fermeture de if(size>256) else...
} // fermeture de if(error) else...
} // fermeture de for(x=0;...)
//=====================================================================================================================
} // fermeture de if(isset...)
?>
</div></body>
Conclusion
Un petit upload simple, sans prétention.
Historique
- 10 novembre 2009 10:23:07 :
- J'ai tenu compte des remarques qui m'avaient été faites, sur la sécurité du code. Le test du type MIME, la limitation de la taille du fichier. Pour le reste, c'est le même code.
Sources de la même categorie
MODIFIER LES EXTENSION DES FICHIERSMODIFIER LES EXTENSION DES FICHIERS Ce programme permet de Modifier les extensions des fichiers selectionnés,par rapport à votre choix..........
par okosa
ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICH...ROUTINE DIR RÉCURSIVE POUR OBTENIR LA LISTE DE TOUS LES FICHIERS DANS UN RÉPERTOIRE ET SES SOUS-DOSSIERS AVEC LA TAILLE EN OCTETS Utilise la structure TypeFichier (nom, repertoire, taille)
Stockage de cette liste dans un tableau global : ListeFichiers()
dans la sub "liste_fic...
par kerisolde
FILE,SECURITY,FICHIERFILE,SECURITY,FICHIERExcuser moi pour le 1er code,je n'ai pas plus charger le Zip
ceci ne permet juste de modifier les extensions des fichiers...
par okosa
PATCHEUR DE FICHIERPATCHEUR DE FICHIERCode permettant d'appliquer un patch a une position définie sur un fichier quelconque (Exe, Dll, txt, ETC...)
Le tout en mode console, avec paramètre...
par tototh
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Pb dom pr gnérer du xml [ par chanandler ]
Bonjour, J'ai code php qui utilise dom qui marche presque sauf qu'il ne fais pas complétement ce que je veux, le code sera mieux qu'un long discours d
Probleme modifier xml ! [ par chanandler ]
Bonjour,Jai créé un script pour modifier un fichier xml a un certain endroit mais ca marche pas et je voie pas où est l'erreur pourriez vous m'aider m
XML d'un tableau [ par gazalii ]
Bonjour,je veux faire un flux XML sous la forme suivante<racine> <element> <valeur1>test</valeur1> <valeur2>test
php dom probleme xml [ par G4uthier ]
Bonjour, j'ai un probleme pour crer mon fichier XML :il me met une erreur : Warning: domdocument() expects parameter 2 to be long, string given in /e
DomXML, TextNode tronqué ... [ par JoJo738 ]
Helo tout le monde :pJe suis depuis ce matin sur une class de log, et je rencontre un petit problème ...Je veux enregistrer la Trace de mon erreur ...
PHP et DOM [ par Hello5562 ]
Bonjour, Je dois modifier un fichier XML avec du PHP mais je ne comprend pas d'où vient mon erreur. mon code : [code=php]load($fichier)) { $user -
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
SYSTEME D'AMISYSTEME D'AMI par moza2409
Cliquez pour lire la suite par moza2409
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate 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
|