我有寫一個 ftp 上傳檔案的功能
程式碼如下
<?php
function ftp_upload($dict,$file)
{
$fp = fopen($file, 'r');
### 連接的 FTP 伺服器是 localhost
$conn_id = ftp_connect('127.0.0.1');
### 登入 FTP, 帳號是 USERNAME, 密碼是 PASSWORD
$login_result = ftp_login($conn_id, 'user', 'pass');
//進到 upload 目錄
ftp_chdir($conn_id,$dict);
//上傳
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "成功上傳 $file\n";
} else {
echo "上傳檔案 $file 失敗\n";
}
ftp_close($conn_id);
fclose($fp);
}
$file_data = 'zero/1.txt';
if(file_exists($file_data))
{
echo '檔案存在';
}
else
{
echo '檔案不存在';
}
echo '<hr>';
ftp_upload('/httpd-2.4.23-win64/Apache24/htdocs/cqm/test',$file_data);
?>
執行結果為
檔案存在
( ! ) Warning: ftp_fput() [function.ftp-fput]: Filename invalid in C:\wamp\www\cqm\ftp_upload.php on line 15
上傳檔案 zero/1.txt 失敗
請問這是什麼問題呢
如果我把 1.txt 放在和 ftp_upload.php 同目錄
就可以上傳成功
//不要使用帶有目錄的路徑
ftp_fput()
建議先把檔案移到該目錄裡面,做兩次工!
mode
The transfer mode. Must be either FTP_ASCII or FTP_BINARY.
使用FTP_BINARY
以上感謝小雨大提供
看參數ftp_fput ( resource $ftp_stream , string $remote_file , resource $handle , int $mode [, int $startpos = 0 ] )
所以你填$file參數的位置是$remote_file
,而你的ftp server應該沒有zero目錄所以不能上傳。