par
LeFlow » 23 août 2019, 11:08
Bonjour.
J'ai un formulaire qui me permet de upload une image. Toutefois, je ne veux pas qu'un image existante avec le même nom soit écrasée.
Je voudrais trouver un moyen de la renommer "à la Google" c'est a dire en ajoutant "(1)" à la fin du nom ou "(2) si existe déjà et ainsi de suite en incrémentant le chiffre.
J'ai trouver plusieurs topic parlant du sujet mais je n'arrive pas à faire ce que je veux.
J'ai vu l'utilisation de split() et preg_split().
Je vous donne un peut de lecture si ça peut aider :
Code : Tout sélectionner
<form class="" action="registerPost.php" method="GET" enctype="multipart/form-data">
<div class="form-group">
<label for="title">Titre de l'article</label>
<input class="form-control" type="text" name="title" placeholder="Titre du nouvel article" required>
</div>
<div class="form-group">
<label for="content">Contenu de l'article</label>
<textarea name="content" rows="8" cols="80" required></textarea>
</div>
<div class="input-group form-group">
<label for="fileToUpload">Mettre une image en avant </label>
<input type="file" name="fileToUpload" id="fileToUpload" accept="image/*">
<div class="cancel input-group-append">
<span class="input-group-text" id="cancel-img"><i class="fas fa-window-close"></i></i></span>
</div>
</div>
<button type="submit" class="btn btn-primary">Enregistrer</button>
</form>
registerPost.php
Code : Tout sélectionner
$filename = $_FILES["fileToUpload"]["name"];
$target_dir = $config['base_url']."pictures/";
$target_file = $target_dir.basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_GET["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
$msg = "Le fichier est une image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
$msg = "Le fichier n'est pas une image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
$msg = "Désolé, le fichier existe déjà.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 1000000) {
$msg = "Désolé, le fichier est trop volumineux.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
$msg = "Désolé, seulement les fichiers JPG, JPEG, PNG & GIF sont téléchargable.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
$mesg = "Désolé, le fichier n'a pas été téléchargé.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$msg = "Le fichir ". basename( $_FILES["fileToUpload"]["name"]). " a été téléchargé.";
} else {
$msg = "Désolé, il y a eu une erreur.";
}
}
if($uploadOk == 1){
$Rinsert = "INSERT INTO post (title, content, imgname, date, iduser) VALUES ('$title', '$content', '$filename', '$date', '$userid')";
$bdd->query($Rinsert);
}
?>
Au passage, j'ai le message suivant sur register.php :
Notice: Undefined index: fileToUpload
une petite aide la-dessus au passage (si vraiment nécessaire, je ferais un autre topic)
Merci d'avance pour votre aide.
Bonjour.
J'ai un formulaire qui me permet de upload une image. Toutefois, je ne veux pas qu'un image existante avec le même nom soit écrasée.
Je voudrais trouver un moyen de la renommer "à la Google" c'est a dire en ajoutant "(1)" à la fin du nom ou "(2) si existe déjà et ainsi de suite en incrémentant le chiffre.
J'ai trouver plusieurs topic parlant du sujet mais je n'arrive pas à faire ce que je veux.
J'ai vu l'utilisation de split() et preg_split().
Je vous donne un peut de lecture si ça peut aider :
[code] <form class="" action="registerPost.php" method="GET" enctype="multipart/form-data">
<div class="form-group">
<label for="title">Titre de l'article</label>
<input class="form-control" type="text" name="title" placeholder="Titre du nouvel article" required>
</div>
<div class="form-group">
<label for="content">Contenu de l'article</label>
<textarea name="content" rows="8" cols="80" required></textarea>
</div>
<div class="input-group form-group">
<label for="fileToUpload">Mettre une image en avant </label>
<input type="file" name="fileToUpload" id="fileToUpload" accept="image/*">
<div class="cancel input-group-append">
<span class="input-group-text" id="cancel-img"><i class="fas fa-window-close"></i></i></span>
</div>
</div>
<button type="submit" class="btn btn-primary">Enregistrer</button>
</form>[/code]
registerPost.php[code] $filename = $_FILES["fileToUpload"]["name"];
$target_dir = $config['base_url']."pictures/";
$target_file = $target_dir.basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_GET["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
$msg = "Le fichier est une image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
$msg = "Le fichier n'est pas une image.";
$uploadOk = 0;
}
}
// Check if file already exists
if (file_exists($target_file)) {
$msg = "Désolé, le fichier existe déjà.";
$uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 1000000) {
$msg = "Désolé, le fichier est trop volumineux.";
$uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
$msg = "Désolé, seulement les fichiers JPG, JPEG, PNG & GIF sont téléchargable.";
$uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
$mesg = "Désolé, le fichier n'a pas été téléchargé.";
// if everything is ok, try to upload file
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
$msg = "Le fichir ". basename( $_FILES["fileToUpload"]["name"]). " a été téléchargé.";
} else {
$msg = "Désolé, il y a eu une erreur.";
}
}
if($uploadOk == 1){
$Rinsert = "INSERT INTO post (title, content, imgname, date, iduser) VALUES ('$title', '$content', '$filename', '$date', '$userid')";
$bdd->query($Rinsert);
}
?>[/code]
Au passage, j'ai le message suivant sur register.php : [quote]Notice: Undefined index: fileToUpload[/quote]
une petite aide la-dessus au passage (si vraiment nécessaire, je ferais un autre topic)
Merci d'avance pour votre aide.