2015-02-10 52 views
2

我一直在尋找幾個小時,並嘗試噸的組合,但迄今爲止在我的嘗試中沒有成功。我在遠程FTP服務器上有一個文件夾,其內容我希望顯示爲網頁上的鏈接。點擊鏈接後,我希望它將該特定文件下載到用戶的計算機。我花了幾個小時嘗試jQuery/Ajax組合與PHP和HTML混合在一起。任何幫助將不勝感激!網頁:通過鏈接下載它們列出遠程FTP文件

<?php 
    $ftp_server = "host info here"; 
    $ftp_user = "user info here"; 
    $ftp_pass = "pw here"; 

    // set up a connection or die 
    $conn_id2 = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
    // try to login 
    ftp_login($conn_id2, $ftp_user, $ftp_pass); 
    ftp_pasv($conn_id2, true); 

    $filelist = ftp_nlist($conn_id2, "/folder/path/here"); 
    foreach ($filelist as $file) 
    { 
     echo $file; 
     echo "<br />"; 
    } 
    ftp_close($conn_id2); 
?> 

這是試圖鏈接文件進行下載之前的代碼。這將成功列出文件夾中的所有文件。我不想在每次加載頁面時將所有文件下載到本地服務器,因爲它們是大文件,並且有很多文件。我只想通過點擊文件名在請求下載它們。

我正在嘗試的總體思路是將鏈接文本傳遞給一個可以再次打開FTP連接並下載指定文件的函數。單擊鏈接直接將副本下載到客戶端的計算機會很棒,但如果我需要首先下載到本地服務器,那是一個選項,那麼我將在頁面加載時將其清除。

我試過了:我花了幾個小時谷歌的jQuery/ajax腳本,在單獨的文件嘗試功能和傳遞參數給他們,等等。到目前爲止,沒有任何工作。雖然我在多種編碼語言方面經驗豐富,但我更新php/js,因此非常感謝任何幫助!

提前感謝您的時間。

回答

0

我知道這是一個古老的線程,但我最近不得不做同樣的事情。

解決方案:

$url = "ftp://ftp.bla.com"; 
// connect and login to FTP server 
$ftp = ftp_connect("ftp.bla.com"); 
if (!$ftp) die('could not connect.'); 

// login 
$login = ftp_login($ftp, "anonymous", ""); 
if (!$login) die('could not login.'); 

// enter passive mode 
$passsive = ftp_pasv($ftp, true); 
if (!$passsive) die('could not enable passive mode.'); 

// get listing 
$listing = ftp_nlist($ftp, "/path/to/dir"); 

foreach($listing as $value){ 
    echo "<a href='$url$value'>", substr($value, strrpos($value, '\\') + 1) ,"</a><br>"; 
} 

這將顯示該文件的名稱爲紐帶,如果你點擊它們,它們會被下載。

**注意:我ftp中的文件沒有名稱中的空格!

資源: