Bonjour !!
Je souhaite uploader un fichier local vers un serveur FTP, c'est la première fois que je fais ça. Pour l'instant je suis en phase de développement et le serveur FTP se trouve sur mon propre ordinateur (localhost).
Voilà, quelque chose me turlupine : je n'arrive à uploader mon fichier "fichier.txt" vers le dossier "dossier" si et seulement si je fournis le chemin d'accès absolu de mon fichier.txt à uploader, c'est-à-dire qu'il faut que j'écrive en dur dans mon script '/chemin/vers/fichier.txt'. Or, lorsque mon serveur sera distant, je ne pourrais pas et ne voudrais pas avoir à savoir le chemin absolu du fichier du poste client. J'ai d'ailleurs lu beaucoup de forums et docs précisant que pour des raisons de sécurité cela n'est ni souhaitable ni possible.
Du coup, je ne comprends pas comment faire pour récupérer le fichier à uploader via FTP. Je ne trouve pas de questions similaires sur les forums, ce qui me fait penser que quelque chose d'évident m'échappe... Sauriez-vous m'aider ?
Par avance je vous remercie
J'utilise la fonction ftp_put() appelée par la méthode uploadFile(), définie par une classe ftp, comme ceci :
Sachant que la fonction uploadFile() de ftp_class.php est définie ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 // Inclusion de la classe ftp include("ftp_class.php"); define('FTP_HOST', 'localhost'); define('FTP_USER', 'myname'); define('FTP_PASS', 'mypwd'); // Objet FTP $ftpObj = new FTPClient(); // Connexion serveur FTP if ($ftpObj -> connect(FTP_HOST, FTP_USER, FTP_PASS)) { $dir = 'dossier'; $fileFrom = "fichier.txt"; $fileTo = $dir . "/" . 'fichier.txt'; // Appel à la fonction de la classe $ftpObj -> uploadFile($fileFrom, $fileTo); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public function uploadFile ($fileFrom, $fileTo) { // *** Set the transfer mode $asciiArray = array('txt', 'csv'); $extension = end(explode('.', $fileFrom)); if (in_array($extension, $asciiArray)) { $mode = FTP_ASCII; } else { $mode = FTP_BINARY; } // *** Upload the file $upload = ftp_put($this->connectionId, $fileTo, $fileFrom, $mode); // *** Check upload status if (!$upload) { $this->logMessage('FTP upload has failed!'); return false; } else { $this->logMessage('Uploaded "' . $fileFrom . '" as "' . $fileTo); return true; } }
Partager