Upload HTML et PHP
sunkie59
Messages postés
62
Statut
Membre
-
sunkie59 Messages postés 62 Statut Membre -
sunkie59 Messages postés 62 Statut Membre -
Bonjour,
Voila, j'ai comme un petit problème, j'essaye de faire un formulaire d'upload avec HTML et PHP, mais le souci, enfin ce que je voudrais, c'est que dans mon formulaire HTML, on puisse choisir le nom de la photo qui va être uploader (je sais pas si cela s'écris comme ceci), exemple :
Nom : [toto] Sur mon site : toto.jpg
Par : [bob] Info fichier toto.jpg : bob // sur mon site :
../actus/bob/toto.jpg
Catégorie : [actu's] Sur mon site : ../actus/
Date : [06/12/2013] Info fichier toto.jpg : 06/12/2013
J'accepte toute réponse, merci de m'aider, c'est assez urgent :)
Voila, j'ai comme un petit problème, j'essaye de faire un formulaire d'upload avec HTML et PHP, mais le souci, enfin ce que je voudrais, c'est que dans mon formulaire HTML, on puisse choisir le nom de la photo qui va être uploader (je sais pas si cela s'écris comme ceci), exemple :
Nom : [toto] Sur mon site : toto.jpg
Par : [bob] Info fichier toto.jpg : bob // sur mon site :
../actus/bob/toto.jpg
Catégorie : [actu's] Sur mon site : ../actus/
Date : [06/12/2013] Info fichier toto.jpg : 06/12/2013
J'accepte toute réponse, merci de m'aider, c'est assez urgent :)
8 réponses
-
Dans le formulaire tu rajoutes un champ texte pour le nom du fichier :
<input type="text" name="nomfichier" value="" />
Et dans le PHP tu modifies la ligne 54 :
// On renomme le fichier $nomImage = md5(uniqid()) .'.'. $extension;
Par :// On renomme le fichier par le nom voulu par l'utilisateur (si renseigné) if(!empty($_POST['nomfichier'])) $nomImage = $_POST['nomfichier'] .'.'. $extension; else $nomImage = md5(uniqid()) .'.'. $extension;
Mais attention, ce code récupère le nom choisi sans effectuer aucune opération dessus (suppression des accents, espaces, caractères spéciaux..). Je te laisse le faire.
Et il n'oblige pas l'utilisateur à saisir un nom.
Voilà ! -
-
Ce que je souhaite faire, c'est de renommer un image avant l'upload.
-
Le nom du fichier ? Tu veux que ton toto.jpg devienne bob.jpg ?
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Non, je m'explique :
Fichier origine de l'utilisateur : 0212145513.jpg
Nom que l'utilisateur souhaite le remplacer : toto (ce qui donne toto.jpg)
Puis upload -
Ok, donne-moi ton bout de code actuel et je le modifie
-
Formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"> <head> <title>Upload d'une image sur le serveur !</title> </head> <body> <?php if( !empty($message) ) { echo '<p>',"\n"; echo "\t\t<strong>", htmlspecialchars($message) ,"</strong>\n"; echo "\t</p>\n\n"; } ?> <!-- Debut du formulaire --> <form enctype="multipart/form-data" action="upload_1.php" method="post"> <fieldset> <legend>Formulaire</legend> <p> <label for="fichier_a_uploader" title="Recherchez le fichier à uploader !">Envoyer le fichier :</label> <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_SIZE; ?>" /> <input name="fichier" type="file" id="fichier_a_uploader" /> <input type="submit" name="submit" value="Uploader" /> </p> </fieldset> </form> <!-- Fin du formulaire --> </body> </html>
Code PHP
<?php // Constantes define('TARGET', '../upload/'); // Repertoire cible define('MAX_SIZE', 100000); // Taille max en octets du fichier define('WIDTH_MAX', 800); // Largeur max de l'image en pixels define('HEIGHT_MAX', 800); // Hauteur max de l'image en pixels // Tableaux de donnees $tabExt = array('jpg','gif','png','jpeg'); // Extensions autorisees $infosImg = array(); // Variables $extension = ''; $message = ''; $nomImage = ''; /************************************************************ * Creation du repertoire cible si inexistant *************************************************************/ if( !is_dir(TARGET) ) { if( !mkdir(TARGET, 0755) ) { exit('Erreur : le répertoire cible ne peut-être créé ! Vérifiez que vous diposiez des droits suffisants pour le faire ou créez le manuellement !'); } } /************************************************************ * Script d'upload *************************************************************/ if(!empty($_POST)) { // On verifie si le champ est rempli if( !empty($_FILES['fichier']['name']) ) { // Recuperation de l'extension du fichier $extension = pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION); // On verifie l'extension du fichier if(in_array(strtolower($extension),$tabExt)) { // On recupere les dimensions du fichier $infosImg = getimagesize($_FILES['fichier']['tmp_name']); // On verifie le type de l'image if($infosImg[2] >= 1 && $infosImg[2] <= 14) { // On verifie les dimensions et taille de l'image if(($infosImg[0] <= WIDTH_MAX) && ($infosImg[1] <= HEIGHT_MAX) && (filesize($_FILES['fichier']['tmp_name']) <= MAX_SIZE)) { // Parcours du tableau d'erreurs if(isset($_FILES['fichier']['error']) && UPLOAD_ERR_OK === $_FILES['fichier']['error']) { // On renomme le fichier $nomImage = md5(uniqid()) .'.'. $extension; // Si c'est OK, on teste l'upload if(move_uploaded_file($_FILES['fichier']['tmp_name'], TARGET.$nomImage)) { $message = 'Upload réussi !'; } else { // Sinon on affiche une erreur systeme $message = 'Problème lors de l\'upload !'; } } else { $message = 'Une erreur interne a empêché l\'uplaod de l\'image'; } } else { // Sinon erreur sur les dimensions et taille de l'image $message = 'Erreur dans les dimensions de l\'image !'; } } else { // Sinon erreur sur le type de l'image $message = 'Le fichier à uploader n\'est pas une image !'; } } else { // Sinon on affiche une erreur pour l'extension $message = 'L\'extension du fichier est incorrecte !'; } } else { // Sinon on affiche une erreur pour le champ vide $message = 'Veuillez remplir le formulaire svp !'; } } ?> -
Salut,
Voici les petits bouts de code te permettant de choisir l'emplacement où sera uploadé le fichier..
Tu ajoutes ton select dans le formulaire :<select name="categorie"> <option value="dossier1">Valeur 1</option> <option value="dossier2">Valeur 2</option> <option value="dossier3">Valeur 3</option> </select>
Tu supprimes le code présent de la ligne 18 à 25 et tu mets celui-ci après la ligne 31 (dans le if empty post) :$chemin_final = TARGET.$_POST['categorie'].'/'; // Création du répertoire cible si inexistant if( !is_dir($chemin_final) ) { if( !mkdir($chemin_final, 0755) ) { exit('Erreur : le répertoire cible ne peut être créé ! Vérifiez que vous disposez des droits suffisants pour le faire ou créez-le manuellement.'); } }
Et enfin, tu remplaces la ligne 58 par celle-ci :// Si c'est OK, on teste l'upload if(move_uploaded_file($_FILES['fichier']['tmp_name'], $chemin_final.$nomImage))