Les Allergies
Alimentaires
Posez votre question Signaler

Tranfert photo par php [Résolu]

bretonm2004 133Messages postés 9 mai 2008Date d'inscription 23 octobre 2011Dernière intervention - Dernière réponse le 3 sept. 2010 à 18:14
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
Lire la suite 

Tranfert photo par php »

24 réponses
Réponse
+0
moins plus
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/
bretonm2004- 2 sept. 2010 à 02:24
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ;)
bretonm2004- 2 sept. 2010 à 21:48
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
Bilow- 2 sept. 2010 à 21:53
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 ;)
bretonm2004- 2 sept. 2010 à 22:37
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ;)
bretonm2004- 2 sept. 2010 à 23:02
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']);
}
Ajouter un commentaire
Réponse
+0
moins plus
mais tu utilises pas de base de données ?
bretonm2004- 2 sept. 2010 à 23:05
oui ca passe par l intermediaire de la bd
bretonm2004- 2 sept. 2010 à 23:08
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
Ajouter un commentaire
Réponse
+0
moins plus
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 :)
Bilow- 3 sept. 2010 à 00:07
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...
bretonm2004- 3 sept. 2010 à 00:13
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
rudak- 3 sept. 2010 à 00:33
tu va laisser une architecture de site comme ca a quelqu'un ?







........................................................tu l'aimes pas ? ^^
Ajouter un commentaire
Réponse
+0
moins plus
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).
bretonm2004- 3 sept. 2010 à 00:28
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
bretonm2004- 3 sept. 2010 à 00:56
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
Bilow- 3 sept. 2010 à 18:14
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) ?
Ajouter un commentaire
Ce document intitulé « tranfert photo par php » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?