ftp_nb_fput

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

ftp_nb_fput将文件从打开的文件存储到 FTP 服务器(非阻塞)

描述

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

ftp_nb_fput() 将数据从文件指针上传到 FTP 服务器上的远程文件。

此函数与 ftp_fput() 的区别在于,此函数异步上传文件,因此您的程序可以在上传文件时执行其他操作。

参数

ftp

一个 FTP\Connection 实例。

remote_filename

远程文件路径。

stream

本地文件上的打开文件指针。读取在文件末尾停止。

mode

传输模式。必须是 FTP_ASCIIFTP_BINARY

offset

远程文件中开始上传的位置。

返回值

返回 FTP_FAILEDFTP_FINISHEDFTP_MOREDATA

变更日志

版本 描述
8.1.0 现在 ftp 参数期望一个 FTP\Connection 实例;以前,期望一个 资源
7.3.0 现在 mode 参数是可选的。以前是强制性的。

示例

示例 #1 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);

// 初始化上传
$ret = ftp_nb_fput($ftp, $file, $fp, FTP_BINARY);
while (
$ret == FTP_MOREDATA) {

// 做任何你想做的事情
echo ".";

// 继续上传...
$ret = ftp_nb_continue($ftp);
}
if (
$ret != FTP_FINISHED) {
echo
"上传文件时出现错误...";
exit(
1);
}

fclose($fp);
?>

另请参阅

添加注释

用户贡献的注释 2 个注释

jascha at bluestatedigital dot com
19 年前
有一种简单的方法可以检查上传文件时的进度。只需使用 ftell 函数来观察文件句柄中的位置。ftp_nb_fput 将在传输文件时递增位置。

示例

<?

$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 ("上传错误\n");
exit(1);
}
fclose($fh);

?>

这将每次循环运行时打印出已传输的字节数。将其转换为百分比很简单,只需将已传输的字节数除以文件的总大小即可。
marcopardo at gmx dot de
4 年前
FTP_FAILED = 0
FTP_FINISHED = 1
FTP_MOREDATA = 2
To Top