PHP ftp_nb_fput() 函数从打开的本地文件上传并将其保存到 FTP 服务器上的文件。
该函数与ftp_fput()的区别在于该函数异步上传文件,这样您的程序就可以在文件上传的同时执行其他操作。
语法
ftp_nb_fput(ftp, server_file, open_file,
mode, offset)
参数
ftp | 必填。 指定要使用的 FTP 连接。 |
server_file | 必填。 指定要上传到的服务器文件路径。 |
open_file | 必填。 指定打开的文件指针。读取在文件末尾停止。 |
mode | 可选。 指定传输模式。必须是 FTP_ASCII 或 FTP_BINARY。 |
offset | 可选。 指定远程文件中开始上传的位置。 |
返回值
返回以下任意值:
- FTP_FAILED:异步传输失败。
- FTP_FINISHED:异步传输已完成。
- FTP_MOREDATA:异步传输仍处于活动状态。
示例:
下面的示例显示了 ftp_nb_fput( ) 函数。
<?php
//要使用的FTP服务器
$ftp_server = "ftp.example.com";
//FTP 连接的用户名
$ftp_user = "user";
//用户密码
$ftp_pass = "password";
//建立连接或者连接失败
$ftp = ftp_connect($ftp_server)
or die("Could not connect to $ftp_server");
if($ftp) {
echo "Successfully connected to $ftp_server!\n";
//尝试登录
if(@ftp_login($ftp, $ftp_user, $ftp_pass)) {
echo "Connected as $ftp_user@$ftp_server\n";
//服务器文件所在路径
//需要上传的文件
$server_file = "server_demo.txt";
//本地打开文件指针
$open_file = fopen("local_demo.txt", "w");
//从打开的本地文件上传
//保存到FTP服务器上的文件
$ret = ftp_nb_fput($ftp, $server_file,
$open_file, FTP_ASCII);
while ($ret == FTP_MOREDATA) {
//继续上传...
$ret = ftp_nb_continue($ftp);
}
if ($ret == FTP_FINISHED) {
echo "Successfully uploaded $open_file\n";
} else {
echo "Error while uploading $open_file\n";
exit(1);
}
//关闭文件指针
fclose($open_file);
} else {
echo "Couldn't connect as $ftp_user\n";
}
//关闭连接
if(ftp_close($ftp)) {
echo "Connection closed successfully!\n";
}
}
?>
上述代码的输出将是:
Successfully connected to ftp.example.com!
Connected as user@ftp.example.com
Successfully uploaded local_demo.txt
Connection closed successfully!