PHP 8.4.1 Released!

ftp_nb_fput

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

ftp_nb_fputAlmacena un archivo desde un archivo abierto en el servidor FTP (modo no-bloqueo)

Descripción

ftp_nb_fput(
    resource $ftp_stream,
    string $remote_file,
    resource $handle,
    int $mode,
    int $startpos = 0
): int

ftp_nb_fput() carga los datos desde un apuntador de archivo a un archivo remoto en el servidor FTP.

La diferencia entre esta función y ftp_fput() es que esta función carga el archivo de forma asincrónica, de modo que su programa puede realizar otras operaciones mientras el archivo está siendo cargado.

Parámetros

ftp_stream

El identificador de enlace de la conexión FTP.

remote_file

La ruta del archivo remoto.

handle

Un apuntador de archivo abierto en el archivo local. La lectura se detiene al final del archivo.

mode

El modo de transferencia. Debe ser FTP_ASCII o FTP_BINARY.

startpos

La posición en el archivo remoto para empezar a subirlo.

Valores devueltos

Devuelve FTP_FAILED o FTP_FINISHED o FTP_MOREDATA.

Ejemplos

Ejemplo #1 Ejemplo de ftp_nb_fput()

<?php

$file
= 'index.php';

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

$conn_id = ftp_connect($ftp_server);

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

// Iniciar la carga
$ret = ftp_nb_fput($conn_id, $file, $fp, FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

// Haga lo que quiera
echo ".";

// Continuar la carga...
$ret = ftp_nb_continue($conn_id);
}
if (
$ret != FTP_FINISHED) {
echo
"Hubo un error al subir el archivo...";
exit(
1);
}

fclose($fp);
?>

Ver también

  • ftp_nb_put() - Almacena un archivo en el servidor FTP (modo no-bloqueo)
  • ftp_nb_continue() - Continúa recuperando/enviando un archivo (modo no-bloqueo)
  • ftp_put() - Carga un archivo al servidor FTP
  • ftp_fput() - Carga un archivo abierto en el servidor 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