Upload image vers ftp

Eléphanteau du PHP | 15 Messages

21 oct. 2012, 18:46

Salut les gens,
je reviens vers vous pour uploader un image vers un serveur ftp.
je me suis servis de ces 2 tutos http://www.siteduzero.com/tutoriel-3-21 ... r-ftp.html et http://www.siteduzero.com/tutoriel-3-37 ... laire.html mais j'ai une erreur :
Warning: ftp_put(C:\wamp\EN LIGNE\design\images\musique\Care1.png) [function.ftp-put]: failed to open stream: No such file or directory in /home/a8657933/public_html/fonctions.php on line 134

voici mon fichier fonctions.php:
<?php
function ajout_photo($photo,$titre,$ftp)
{
	//$nom = "/public_html/design/images/musique/".$titre.".png";
	//echo $nom;
	echo '<br>'."photo : ";
	echo($photo).'<br>';
	$titre = $titre.'.png';
	ftp_chdir($ftp, '/public_html/design/images/musique/'); 
	echo (ftp_pwd($ftp));
        ftp_put($ftp, $titre, "C:\wamp\EN LIGNE\design\images\musique\Care1.png", FTP_BINARY);
}
?>
le formulaire pour définir les données :
<center>
<form action="ajout_musique.php" method="post" enctype="multipart/form-data">
	<TABLE BORDER=0>
	<TR>
	<TD>Artiste :</TD>
	<TD>
	<input type="text" name="artiste" value="Artiste" />
	</TD>
	</TR>
	<TR>
	<TD>Titre :</TD>
	<TD>
	<input type="text" name="titre" value="Titre" />
	</TD>
	</TR>
	<TR>
	<TD>Lien :</TD>
	<TD>
	<TEXTAREA rows="3" name="lien">Lien</TEXTAREA>
	</TD>
	</TR>
	<TR>
	<TD>Photo :</TD>
	<TD>
	<input type="file" name="photo"/>
	</TD>
	</TR>
	</TABLE>
	<br>
	<input type="submit" value="Ajouter">
	</form>
</center>
et je récupère les valeurs comme ceci :
<?php
$artiste = $_POST['artiste'];
$titre = $_POST['titre'];
$lien = $_POST['lien'];
$photo = $_POST['photo'];
?>
Quelqu'un aurait une solution ?

ViPHP
xTG
ViPHP | 7331 Messages

21 oct. 2012, 19:00

Le \ permet d'échapper un caractère, donc il faut le doubler dans les paths :
ftp_put($ftp, $titre, "C:\\wamp\\EN LIGNE\\design\\images\\musique\\Care1.png", FTP_BINARY);

Eléphanteau du PHP | 15 Messages

21 oct. 2012, 19:04

idem...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 oct. 2012, 19:31

Mwé,

Au pif tu as testé ça sur ton pc et la tu test en ligne et ça ne fonctionne pas ?


Parce que bon un chemin de fichier windows comme nom de fichier local sur une machine qui me semble être du Linux (ou UNIX osef) ça fait pas bon ménage ;)

Warning: ftp_put(C:\wamp\EN LIGNE\design\images\musique\Care1.png) [function.ftp-put]: failed to open stream: No such file or directory in /home/a8657933/public_html/fonctions.php on line 134
La dernière partie c'est l'emplacement du fichier et la ligne incriminé le système n'est donc pas windows !



@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

21 oct. 2012, 19:55

non je teste directement en ligne...
bah ça serait cool que ça marche de n'importe quel ordi (windows ou linux) et ce lien c'est celui du fichier sélectionné que je viens chercher sur mon DD.
sauf que pour tester je préfère mettre le lien en brut et apres me concentrer sur un lien tiré du formulaire..

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 oct. 2012, 20:03

Ben il ne peux pas être sur pc le fichier si le site est en ligne !

Tu doit mettre le nom d'un fichier qui se trouve sur le serveur où ton script s'exécute ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

21 oct. 2012, 20:07

bah non, c'est pour upload un fichier de l'ordi vers le ftp....

Eléphanteau du PHP | 15 Messages

21 oct. 2012, 20:11

Description
bool ftp_put ( resource $ftp_stream , string $remote_file , string $local_file , int $mode [, int $startpos = 0 ] )

ftp_put() enregistre le fichier local_file sur le serveur FTP.

Liste de paramètres

ftp_stream

L'identifiant du lien de la connexion FTP.
remote_file

Le chemin vers le fichier distant.
local_file

Le chemin vers le fichier local.
mode

Le mode de transfert. Doit être soit FTP_ASCII, soit FTP_BINARY.
startpos

La position dans le fichier distant à partir de laquelle le téléchargement commencera.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 oct. 2012, 00:26

Heu non cette fonction envoi sur un serveur FTP un fichier qui se trouve sur la machine où s'exécute le script (ou accessible via le réseau (samba ou autre).

La le script est exécuté chez ton hébergeur donc quoi qu'il arrive il ne connais pas ton pc à toi.
Le serveur de ton hébergeur est un serveur UNIX (ou Linux) donc en aucun cas un chemin du style c:/... Ne sera valable.

Si tu veux envoyer un fichier de ton pc sur le serveur FTP via ton script, il te faut un script d'upload sur ton site web qui ensuite effectue l'envoi sur le serveur FTP.

Donc un formulaire avec un champs de type file et le traitement qui va bien pour le reste.

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

22 oct. 2012, 09:28

D'accord ! j'ai rien dis alors...
Le formulaire j'ai mais pas le traitement alors... comment ça marche ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

22 oct. 2012, 21:00

en regardant dans la doc ? http://fr2.php.net/manual/fr/features.f ... method.php

lorsque tu as le fichier temporaire tu peux utilise ton code de connexion ftp :)



@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 15 Messages

12 nov. 2012, 18:37

j'ai trouvé :
$uploaddir = '/home/a8657933/public_html/design/images/musique/';
$uploadfile = $uploaddir . $titre . ".png";//$_FILES['photo']['name'];
						
foreach ($_FILES["photo"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["photo"]["tmp_name"][$key];
$name = $_FILES["photo"]["name"][$key];
move_uploaded_file($tmp_name, $uploadfile);
}
}

ViPHP
AB
ViPHP | 5818 Messages

12 nov. 2012, 19:08

Si tu veux plus d'infos sur le sujet tu peux regarder

Petit nouveau ! | 4 Messages

14 nov. 2012, 10:02

Essai ça

$filename = $_FILES['userfile']['name'];
$point=strrpos($filename, ".");

if ($point){
$extension=substr($filename, $point);
}
else{
$extension =""; }
//$extension = substr($filename, '.');;
$date=date("ymdhis");
$chemin = "../images/dossier/";
//un nouveau nom qui prend en compte la date, l'heure, les minutes
//et secondes est crée ; ainsi, aucune image ne peut être écrasée sur le serveur
$userfile_name = time().$date.$extension;

move_uploaded_file($_FILES['userfile']['tmp_name'],$chemin.$userfile_name);

Petit nouveau ! | 4 Messages

14 nov. 2012, 10:03

Tu peux aussi voir ce site http://www.ivoire-plus.net/rad/