Page 1 sur 1

upload multiple et rename

Posté : 28 mai 2019, 14:01
par anti91
bonjour à tous ,

j'ai donc un script d'upload multiple qui fonctionne et après j'enregistre tout les fichiers uploader dans la base .

pour l'instant j enregistre la photo avec son nom d'origine , je souhaiterais renommer les photos comme ceci : photo_1, photo_2, etc ....

c'est la que je bloque .... merci d'avance pour votre aide :

Code : Tout sélectionner

if(isset($_REQUEST['AddFiles'])){ $dossier_bien = ($result_biens->photo); $targetFolder = $dossier_bien; //Path to the Uploads Folder if (!empty($_FILES)) { for($i=0;$i<count($_FILES['upload_file']['name']);$i++){ $tempFile = $_FILES['upload_file']['tmp_name'][$i]; $targetFile = rtrim($targetFolder,'/') . '/' . $_FILES['upload_file']['name'][$i]; $fileTypes = array('jpeg','jpg','png','gif'); // Allowed File extensions $fileParts = pathinfo($_FILES['upload_file']['name'][$i]); if(isset($fileParts['extension'])){ if (in_array($fileParts['extension'],$fileTypes)) { move_uploaded_file($tempFile,$targetFile); $pdo->exec("INSERT INTO photo_bien (photo_bien, Id_bien) VALUES ('$targetFile','$Id_bien')");

Re: upload multiple et rename

Posté : 28 mai 2019, 15:04
par Saian
Salut, il te suffit juste de modifier $targetFile :
$fileParts = pathinfo($_FILES['upload_file']['name'][$i]);
$targetFile = rtrim($targetFolder,'/') . '/' . 'photo_'.($i + 1).'.'.$fileParts['extension'];

PS : tu risques d'avoir des problèmes de cache si tu modifies les photos. Tu peux du coup soit générer un nom aléatoire, soit enregistrer la date de l'insert dans la table que tu pourras accoler à la suite du chemin de la photo lors de son affichage :
<img src="path/of/image/image.jpg?20190528152110"/>

Re: upload multiple et rename

Posté : 28 mai 2019, 15:25
par anti91
bonjour et merci ......

une autre petite question , comment faire si l'utilisateur veut rajouter des photos ? parce que la forcément ça écrase les photos existantes ....

y a t il moyen de récupérer la dernière valeur enregistré , pour redémarré au numéro ou on c"était arrêté ?

merci pour ton aide ....

excuse moi je n'avais pas vu le deuxième message , je pense que je vais faire comme cela avec la date , mais j'ai essayé cela ne fonctionne pas , du coup il ne m'enregistre qu'une seule photo .....

Code : Tout sélectionner

$targetFile = rtrim($targetFolder,'/') . '/' . 'photo_'.date("H:i:s").'.'.$fileParts['extension'];

Re: upload multiple et rename

Posté : 28 mai 2019, 16:19
par Saian
Oui comme ça le problème c'est qu'un nom de fichier avec des : ça doit pas être autorisé. De plus toutes les images seront surement traitées dans la même seconde donc même nom. Moi je te proposais plutôt d'ajouter une colonne datetime dans la table photo_bien que tu pourras utiliser lors de l'affichage pour l'ajouter après le nom de l'image (format du style 'YmdHis') comme ça par exemple si le fichier photo_1.jpg est modifié la date étant différente, le navigateur comprendra que l'image n'est plus la même et chargera la nouvelle. Sans ça il continuera de t'afficher l'image qui est dans son cache jusqu'à ce que le cache soit nettoyé.

Pour savoir ou reprendre le compteur si l'utilisateur ajoute des images, tu peux faire un SELECT COUNT(*) FROM photo_bien WHERE Id_bien = $idBien et partir de count + 1.

Re: upload multiple et rename

Posté : 28 mai 2019, 17:51
par anti91
super .....

je test cela et je te dis , merci encore