OVH Cloud OVH Cloud

[FTP] Envoi d'un fichier par FTP depuis un formulaire,

5 réponses
Avatar
kalimbra
bonjour,

voila je maitrise à peu près l'envoi d'un fichier par ftp
(ftp_fput)lorsque le fichier est en 'dur' dans le code, mais je n'arrive
pas à le faire lorsque le fichier provient d'un champ 'file' dans un
formulaire. Quelqu'un aurait il un petit exemple de la syntaxe à utiliser ?

merci d'avance..

cordialement,

5 réponses

Avatar
CrazyCat
kalimbra wrote:
voila je maitrise à peu près l'envoi d'un fichier par ftp
(ftp_fput)lorsque le fichier est en 'dur' dans le code, mais je n'arrive
pas à le faire lorsque le fichier provient d'un champ 'file' dans un
formulaire. Quelqu'un aurait il un petit exemple de la syntaxe à utiliser ?


hmmmmmm?

Tu veux en fait que l'utilisateur puisse envoyer un fichier depuis son
ordinateur vers ton site?
Tout d'abord, il faut que le formulaire ait l'attribut:
enctype="multipart/form-data"

Ensuite, le traitement est relativement simple:
<?php
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Le fichier est valide, et a été téléchargé
avec succès. Voici plus d'informations :n";
} else {
echo "Attaque potentielle par téléchargement de fichiers.
Voici plus d'informations :n";
}
echo 'Voici quelques informations de déboguage :';
print_r($_FILES);
echo '</pre>';
?>

Ceci est intégralement tiré de la documentation
<http://fr.php.net/manual/fr/features.file-upload.php>
--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net

Avatar
kalimbra
CrazyCat wrote:

hmmmmmm?

Tu veux en fait que l'utilisateur puisse envoyer un fichier depuis son
ordinateur vers ton site?
Tout d'abord, il faut que le formulaire ait l'attribut:
enctype="multipart/form-data"


Ce serait pour des fichier assez lourd (1 à 5 megas), est ce qu'il ne
faudrait pas passer par ftp pour assurer le transfert ?

Avatar
CrazyCat
kalimbra wrote:
Ce serait pour des fichier assez lourd (1 à 5 megas), est ce qu'il ne
faudrait pas passer par ftp pour assurer le transfert ?


Oui et non, mais tu passes hors charte :)

PHP ne peut pas gérer des fichiers utilisateurs, PHP fonctionne au
niveau serveur.

=> Il est donc impossible que PHP prenne en charge le transfert FTP d'un
fichier "client" vers le serveur (ou un quelconque autre serveur)
=> A moins que tu n'ais accès à la configuration du serveur, tu es tenu
par la limite imposée pour les fichiers uploadés (habituellement 2Mo)

Il te font donc te tourner vers une autre technologie, ou vers un
système pensé différement.

--
Astuces informatiques: http://www.crazycat.info
Tchattez en liberté: http://www.crazy-irc.net

Avatar
kalimbra
CrazyCat wrote:
kalimbra wrote:

Il te font donc te tourner vers une autre technologie, ou vers un
système pensé différement.



Ok... je vous remercie pour ces infos.. je vais donc passer à une autre
solution...

Avatar
P'tit Marcel

voila je maitrise à peu près l'envoi d'un fichier par ftp
(ftp_fput)lorsque le fichier est en 'dur' dans le code, mais je n'arrive
pas à le faire lorsque le fichier provient d'un champ 'file' dans un
formulaire.


D'après ta réponse à CrazyCat, ce n'est pas le fichier qui provient d'un
champ "file" d'un formulaire, c'est le nom du fichier qui est récupéré
dans un champ text nommé "file" d'un formulaire. Pour faire simple, il
s'agit d'une métonymie voire d'une synecdoque.


Sur cette base, il suffit de remplacer au départ le :

$ressource = ftp_connect ("adressePCsource");
if($ressource === false) { ...pb de connexion... }

par
$ressource = ftp_connect ($_POST['file']);
if($ressource === false) { ...pb de connexion... }


Le fichier doit évidemment se trouver sur un ordinateur où tourne un
logiciel serveur FTP (donc, pas le PC de Madame Michu). Là, il s'agit
d'une prolepse.


eça
--
P'tit Marcel
http://www.alyon.asso.fr/litterature/regles/figures_de_rhetorique.html
;-]