PHP Conference Nagoya 2025

ftp_nb_fput

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

ftp_nb_fputÉcrit un fichier sur un serveur FTP, et le lit depuis un fichier (non bloquant)

Description

ftp_nb_fput(
    FTP\Connection $ftp,
    string $remote_filename,
    resource $stream,
    int $mode = FTP_BINARY,
    int $offset = 0
): int

ftp_nb_fput() écrit le fichier remote_filename présent sur la machine locale, sur le serveur FTP ftp.

La différence entre cette fonction et ftp_fput() est que cette fonction peut lire le fichier de manière asynchrone, afin que votre programme fasse autre chose pendant que le fichier soit téléchargé.

Liste de paramètres

ftp

Une instance de FTP\Connection.

remote_filename

Le chemin vers le fichier distant.

stream

Un pointeur de fichier vers un fichier local. La lecture s'arrête à la fin du fichier.

mode

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

offset

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

Valeurs de retour

Retourne FTP_FAILED, FTP_FINISHED ou FTP_MOREDATA.

Historique

Version Description
8.1.0 La paramètre ftp attend désormais une instance de FTP\Connection ; auparavant, une ressource était attendu.
7.3.0 Le paramètre mode est maintenant optionel. Précédemment il était obligatoire.

Exemples

Exemple #1 Exemple avec ftp_nb_fput()

<?php

$file
= 'index.php';

$fp = fopen($file, 'r');

$ftp = ftp_connect($ftp_server);

$login_result = ftp_login($ftp, $ftp_user_name, $ftp_user_pass);

// Initialise le téléversement
$ret = ftp_nb_fput($ftp, $file, $fp, FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

// Faites ce que vous voulez...
echo ".";

// Continue le téléversement...
$ret = ftp_nb_continue($ftp);
}
if (
$ret != FTP_FINISHED) {
echo
"Il y a eu un problème lors du téléversement du fichier...";
exit(
1);
}

fclose($fp);
?>

Voir aussi

  • ftp_nb_put() - Envoie un fichier sur un serveur FTP (non-bloquant)
  • ftp_nb_continue() - Reprend le téléchargement d'un fichier (non bloquant)
  • ftp_put() - Charge un fichier sur un serveur FTP
  • ftp_fput() - Téléverse un fichier sur un serveur FTP

add a note

User Contributed Notes 2 notes

up
1
jascha at bluestatedigital dot com
19 years ago
There is an easy way to check progress while uploading a file. Just use the ftell function to watch the position in the file handle. ftp_nb_fput will increment the position as the file is transferred.

Example:

<?

$fh = fopen ($file_name, "r");
$ret = ftp_nb_fput ($ftp, $file_name, $fh, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
print ftell ($fh)."\n";
$ret = ftp_nb_continue($ftp);
}
if ($ret != FTP_FINISHED) {
print ("error uploading\n");
exit(1);
}
fclose($fh);

?>

This will print out the number of bytes transferred thus far, every time the loop runs. Coverting this into a percentage is simply a matter of dividing the number of bytes transferred by the total size of the file.
up
-3
marcopardo at gmx dot de
4 years ago
FTP_FAILED = 0
FTP_FINISHED = 1
FTP_MOREDATA = 2
To Top