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 :)
A voir également:
- Upload HTML et PHP
- Upload video youtube - Télécharger - Diffusion
- Editeur html - Télécharger - HTML
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Espace en html - Astuces et Solutions
8 réponses
Dans le formulaire tu rajoutes un champ texte pour le nom du fichier :
Et dans le PHP tu modifies la ligne 54 :
Par :
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à !
<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à !
sunkie59
Messages postés
62
Statut
Membre
Super merci, et dernière question, peut on choisir l'emplacement de l'upload entre plusieurs catégories avec ce type de code ?
MisterPoZZi
Messages postés
26
Statut
Membre
3
Absolument. Je te fais le code en fin de soirée ou demain matin.
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
Fichier origine de l'utilisateur : 0212145513.jpg
Nom que l'utilisateur souhaite le remplacer : toto (ce qui donne toto.jpg)
Puis upload
Formulaire :
Code PHP
<!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 :
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) :
Et enfin, tu remplaces la ligne 58 par celle-ci :
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))