Tranfert photo par php

Résolu
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   -  
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai un dossier dans mon serveur qui se nomme avendrenp ou sont stoké mes photos d,annonce classés

les photos sont classé par id

ex 1-0.jpg 1 est le id et 0 le numero de la photo

j'aimerait transferer ces photos dans un dossier avendrep quand l'annonce est activée

comment devrais-je my prendre

merci


A voir également:

6 réponses

redafillali Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Voila le code il ne faut que changer les répertoire

<?php
if(isset($_FILES['photo']))
{
// params
unset($erreur);
$extensions_ok = array('png', 'gif', 'jpg', 'jpeg');
$taille_max = 3000000;
$dest_dossier = '../photos/';
// utilisez également des slashes sous windows : $dest_dossier = 'd:/damien/photos/';
// vérifications
if( !in_array( substr(strrchr($_FILES['photo']['name'], '.'), 1), $extensions_ok ) )
{
$erreur = 'Veuillez sélectionner un fichier de type png, gif ou jpg !';
}
elseif( file_exists($_FILES['photo']['tmp_name'])
and filesize($_FILES['photo']['tmp_name']) > $taille_max)
{
$erreur = 'Votre fichier doit faire moins de 3Mb !';
}
// copie du fichier
if(!isset($erreur))
{
$dest_fichier = basename($_FILES['photo']['name']);
// formatage nom fichier
// enlever les accents
$dest_fichier = strtr($dest_fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
// remplacer les caracteres autres que lettres, chiffres et point par _
$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
// copie du fichier

?>
<html>
<body>
<!-- Erreur ? -->
<?php
if(isset($erreur)){
echo '<p>', $erreur ,'</p>';
}
?>
<!-- Formulaire -->
<!-- Attention, ne de ne pas oublier le enctype="multipart/form-data" -->
<form name="form" method="POST" action="<?php echo $editFormAction; ?>" enctype="multipart/form-data">
<!-- Limiter la taille des fichiers à 500Ko -->
<input type="hidden" name="MAX_FILE_SIZE" value="500000" />
<fieldset>
<legend>Envoi de fichiers</legend>
<!-- champs d'envoi de fichier, de type file -->
<p>
<label for="photo">Photo : </label>
<input type="file" name="photo" />
<!-- bouton d'envoi -->
</p>
<p><input type="submit" name="envoi" value="Envoyer les fichiers" /></p>
</legend>
</fieldset>

<input type="hidden" name="MM_insert" value="form">
</form>
</body>

</html>

bonne chance
http://freecaell.blogspot.com/
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
genial ton code mais ce n est pas tout a fait ce que j ai de besoin

le fichier est déja formaté et deja sur le serveur je n'ai donc pas besoin du formulaire et de ce code

tout ce que je veut faire c'est prendre ma photos qui est sur un dossier du serveur et la déplacer tout simplement merci
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Pour cela il faut renommer le fichier.
Par exemple, le fichier de code "deplacer.php" et "photo.jpg" sont dans le dossier "source1". Tu veux déplacer "photo.jpg" dans "source2", qui est dans le même dossier que source 1.

Il faut utiliser cette commande à partir de "deplacer.php" :
rename("photo.jpg", "../source2/photo.jpg");

Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
je croit qu on ne se comprend pas je ne veut pas renommer mon fichier il a deja le nom que je veut

je veut seuleument le COPIER dans un autre dossier du serveur
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Nom de dieu, les gens, mais réfléchissez ! C'est la même commande ! Il y a une expresion en Belgique "Voyez plus loin que le bout de votre nez" qui veut dire "Mais allé quoi réfléchis !"
copy("photo.jpg", "../source2/photo.jpg");
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
donc je copie avec cette fonction ma variable image qui contient la photo ds le dossier

si je comprend bien le photo.jpg est le fichier source et le reste est la cible
j essaier ca et je revient

merci
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Euh... Si ton image est une variable en PHP, ouverte avec la librairie GD, tu peux l'enregistrer. L'exemple que je t'ai donné est pour copier un fichier.
Si c'est pour une imagedans une variable PHP, pour (par exemple) une image JPEG, c'est imagejpg($image, "../source2/photo.jpg");
Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
voila j ai essayé la methode et voici ce qu il en ressort

Warning: copy(55-0.jpg) [function.copy]: failed to open stream: No such file or directory in /home/auto7837/public_html/publieravendre1.php on line 290

Warning: copy() [function.copy]: Filename cannot be empty in /home/auto7837/public_html/publieravendre1.php on line 291

voici le code que j'ai utilisé

copy("$image1", "/home/auto7837/public_html/photos/avendrenp/");
copy("$image2", "/home/auto7837/public_html/photos/avendrenp/");

$image 1 contient une image

$image 2 ne contient rien
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Salut !

copy() copie les fichiers sur le serveur. $image1 contient une image, GD, ou bien l'adresse d'une image sur le serveur ?

Si c'est sur le serveur, d'accord. Attention, $image2 ne peut pas être vide, supprime cette ligne.

Si c'est une image en GD, alors il faut l'enregistrer :
imagejpeg($image1, ""/home/auto7837/public_html/photos/avendrenp/");

Bye ;)
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
ca peut etre un peu compliqué

j'ai en fait image de 1 a 5 et elle sont soit pleine ou vide car c est une annonce classé le client peut en mettre une ou plusieurs je vais te donne mon script d'ajout d'image peut etre ca peut t aider

le premier chifre de l'image est le id et le deuxieme est le numero de l image

ex: 52-0.jpg id 52 photo1

merci

$i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
for($nbi=1; $nbi<=5; $nbi++) {
if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
}
//AJOUT DES IMAGES
for($j=0; $j<$i; $j++) {
list($width, $height, $type, $attr)=getimagesize($image[$j]['tmp_name']);
if($image[$j]['size']>524288 && !$image[$j]['error']) { $error="un fichier ne dépassant pas 500ko!!"; }
if(move_uploaded_file($image[$j]['tmp_name'], '/home/auto7837/public_html/photos/avendrep/'.$id.'-'.$v.'.jpg')) {
$fn[$v]=$id.'-'.$v.'.jpg';
$v++;
}
unset($image[$j]['tmp_name']);
}
0
rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
 
mais tu utilises pas de base de données ?
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
oui ca passe par l intermediaire de la bd
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
le principe est que quand le client fait son annonce les images se mettent ds le repertoire avendrenp par le script lpus haut

apres quand le client veut modifier son annonce les photos modifiés s'en vont dans le dossier avendrep

quand le webmaster les a validé elles doivent retourner ds le dossier avendrenp pour qu elle soit affichée sur le site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
 
mais pourquoi si compliqué ???

tu peux laisser toutes les images dans un seul fichier...

tu ajoute un champ "statut" dans la table ou sont stoquées tes images et suivant ce statut tu sais si ton annonce est validée ou pas par exemple..

0 : annonce non validée
1 : annonce validée
2: annonce fermée/vendue/ou autre... (ou DELETE peu importe)


c'est quand meme plus logique que changer tes images de place
ca sert a rien ca :)
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
ouais je susi daccord mais mon script est deja tout monté le site est terminé il reste ce petit detail il doit bien avoir une facon de proceder comme ca
0
rudak Messages postés 590 Date d'inscription   Statut Membre Dernière intervention   46
 
ca sera un gain de temps pour toi au final de prendre 2 jours pour revoir ton script et avoir un système efficace
=> a chaques annonces entrées 1 ligne dans la table annonce
=> et a chaques photos qui correspond 1 ligne dans la table photo_annonce
avec une colone id_annonce pour savoir a quelle annonce est reliée l'image...

quand tu valide l'anonce tu modifie juste le champ valide de la table annonce et ton annonce sera visible

rien de plus simple a gérer
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
ouais je suis daccord mais pour l instant j'ai besoin d'une solution temporaire svp
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
J'aimerais juste comprendre : Tu as besoin d'une solutino temporaire. Mais tu peux revoir le site 2 jours. Si tu as besoin d'une solution, c'est que le site n'ets pas encore complètement en place, et tu peux donc te permettre de revoir cela. Ou est le problème ?
Sinon, c'est vrai que par une BD c'est plus simple. Ajoute un champ 'statu' qui vaut 0 pour "posté", 1 pour "modifié", 2 pour "supprimé" etc...
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
je doit mettre le site en ligne tres rapidement que je laissse en main a une autre personne donc c est pour ca que j ai besoin de cette solution je vais le refaire a mon retour
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Etape pour les FICHIERS existants, et donc PAS en variable PHP :

Pour COPIER :
copy($chemin_initial, $chemin_final);
Pour DEPLACER :
rename($chemin_initial, $chemin_final);
Note que tu peux te déplacer dans les dossiers.

Exemple :
copy("dossier/photo.jpg", "../source/photo.jpg");

En absolu, cela déplacera /dossierInitial/dossier/photo.jpg VERS /source/photo.jpg ; Bien entendu dossierInitial est le dossier contenant la page PHP.

Etape pour les images en VARIABLE PHP :
Enregistrer les images selon leur extension.
imagejpeg($handle, $chemin_final); pour une image JPEG en variable PHP. Handle étant ouvert avec createimagefromjpeg() ou bien une autre.

Pour info, c'est le chemin relatif, pas le chemin absolu qu'il faut utiliser. Donc, pas /home/auto..., mais bien ../source/ (par exemple).
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
je suis vrm désolé mais je ne suis pas sur de bien comprendre

mon image est dans le dossier avendrep et sa variable est $image1 et je veut la transferer dans le dossier avendrenp

je ne comprend pas le source et si ma variable ne contient aucune image je fait quoi
0
bretonm2004 Messages postés 319 Date d'inscription   Statut Membre Dernière intervention   2
 
voila ce que j ai pour l instant

$id = $_POST['id'];
$email = $_POST['email'];
$idinsert=$id;
$sql="SELECT * FROM avendresemipubliee WHERE id=$id ";
$req=mysql_query($sql) or die(mysql_error());
while($row=mysql_fetch_array($req)) {
$id=$row['id']; $typedannonce=$row['typedannonce']; $marque=$row['marque']; $autres=$row['autres']; $modele=$row['modele']; $prix=$row['prix']; $negociable=$row['negociable']; $annee=$row['annee']; $etat=$row['etat']; $carburant=$row['carburant']; $kilometrage=$row['kilometrage']; $transmission=$row['transmission']; $immatricule=$row['immatricule']; $climatisation=$row['climatisation']; $audio=$row['audio']; $cylindre=$row['cylindre']; $puissance=$row['puissance']; $consommation=$row['consommation']; $couleurinterieure=$row['couleurinterieure']; $couleurexterieure=$row['couleurexterieure']; $telephone=$row['telephone']; $email=$row['email']; $message=$row['message']; $date=$row['date']; $image1=$row['image1']; $image2=$row['image2']; $image3=$row['image3']; $image4=$row['image4']; $image5=$row['image5'];

$i=0; $v=0; for($j=0; $j<5; $j++) { $image[$j]=''; $fn[$j]=''; }
for($nbi=1; $nbi<=5; $nbi++) {
if(!empty($_FILES['image'.$nbi]['tmp_name'])) { $image[$i]=$_FILES['image'.$nbi]; $i++; }
}
copy("$image1", '/home/auto7837/public_html/photos/avendrenp/'.$id.'-'.$v.'.jpg');
{

mysql_query("UPDATE avendrepubliee SET typedannonce='{$typedannonce}', marque='{$marque}', autres='{$autres}', modele='{$modele}', prix='{$prix}', negociable='{$negociable}', annee='{$annee}', etat='{$etat}', carburant='{$carburant}', kilometrage='{$kilometrage}', transmission='{$transmission}', immatricule='{$immatricule}', climatisation='{$climatisation}', audio='{$audio}', cylindre='{$cylindre}', puissance='{$puissance}', consommation='{$consommation}', couleurinterieure='{$couleurinterieure}', couleurexterieure='{$couleurexterieure}', telephone='{$telephone}', email='{$email}', message='{$message}', image1='{$fn[0]}', image2='{$fn[1]}', image3='{$fn[2]}', image4='{$fn[3]}', image5='{$fn[4]}' WHERE id='{$id}';");
}

mais j ai une erreur Parse error: syntax error, unexpected $end in /home/auto7837/public_html/publieravendre1.php on line 340
0
Bilow Messages postés 1014 Date d'inscription   Statut Membre Dernière intervention   117
 
Tu as oublié une accolade de fin } pour la boucle
while($row=mysql_fetch_array($req)) { 
Place '}' là où la boucle s'arrête.
Oublei la variable PHP. Ce n'est pas un handle, c'est juste l'emplacement de l'image.
Tu peux me donner un exemple de $image1 (mais pas vide) ?
0