2024 年日本 PHP 研討會

ftp_nb_fput

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

ftp_nb_fput將檔案從開啟的檔案儲存到 FTP 伺服器(非阻塞)

說明

ftp_nb_fput(
    FTP\Connection $ftp,
    字串 $remote_filename,
    資源 $stream,
    整數 $mode = FTP_BINARY,
    整數 $offset = 0
): 整數

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);
當 ($ret == FTP_MOREDATA) 時 {
印出 ftell ($fh)."\n";
$ret = ftp_nb_continue($ftp);
}
如果 ($ret != FTP_FINISHED) {
印出 ("上傳錯誤\n");
結束(1);
}
關閉檔案($fh);

?>

這會在每次迴圈運行時印出目前已傳輸的位元組數。要將其轉換為百分比,只需將已傳輸的位元組數除以檔案的總大小即可。
marcopardo at gmx dot de
4 年前
FTP_FAILED = 0
FTP_FINISHED = 1
FTP_MOREDATA = 2
To Top