2013-07-16 236 views
1

我需要使用PHP上傳到FTP服務器的4個文件。我有下面的示例代碼,我正在從中工作。如何更改此代碼以上載已存在於服務器上的多個文件(在ftp傳輸時未上傳)。上傳多個文件到遠程FTP服務器使用PHP

可以說我有相對於PHP文件上傳的子文件夾4個文件,讓我們稱之爲子文件夾「/ fileshere /」,在它下面的4個文件:

file1.zip 文件2。 zip file3.zip file4.zip

我需要腳本來上傳每個文件,然後給出一個完成的消息。

以下是我正在使用並嘗試適應的起始代碼。任何幫助將非常感激:如果您要上傳多個文件,只要把你的文件名到數組然後把整個代碼轉化爲循環

$ftp_server = "ftp.yourserver.com"; 
$ftp_user_name = "ftpuser"; 
$ftp_user_pass = "ftppassword"; 
$remote_dir = "/target/folder/on/ftp/server"; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = @ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

//default values 
$file_url = ""; 

if($login_result) { 
//set passive mode enabled 
ftp_pasv($conn_id, true); 

//check if directory exists and if not then create it 
if([email protected]_chdir($conn_id, $remote_dir)) { 
//create diectory 
ftp_mkdir($conn_id, $remote_dir); 
//change directory 
ftp_chdir($conn_id, $remote_dir); 
} 

$file = $_FILES["file"]["tmp_name"]; 
$remote_file = $_FILES["file"]["name"]; 

$ret = ftp_nb_put($conn_id, $remote_file, $file, FTP_BINARY, FTP_AUTORESUME); 
while(FTP_MOREDATA == $ret) { 
$ret = ftp_nb_continue($conn_id); 
} 

if($ret == FTP_FINISHED) { 
echo "File '" . $remote_file . "' uploaded successfully."; 
} else { 
echo "Failed uploading file '" . $remote_file . "'."; 
} 
} else { 
echo "Cannot connect to FTP server at " . $ftp_server; 
} 
+0

您是否試過該代碼? –

+0

究竟是什麼問題? – jeroen

+0

上面的代碼用於上傳後的單個文件傳輸。我需要使用代碼才能使用服務器上預設位置的文件!更多然後只是1 – user2453942

回答

1

試試這個代碼

<?php 
// connect and login data 
$web = 'www.website.com'; 
$user = 'admin'; 
$pass = 'password'; 
// file location 
$server_file = '/public_html/example.txt'; 
$local_file = 'example.txt'; 
//connect 
$conn_id = ftp_connect($web); 
$login_result = ftp_login($conn_id,$user,$pass); 
//uploading 
if (ftp_put($conn_id, $server_file, $local_file, FTP_BINARY)) 
{echo "Success";} 
else {echo "Failed";} 
?> 

+0

我對PHP很不熟悉,你能否提供數組的代碼... – user2453942

相關問題