1
我有一個FTP文件,我想給它的用戶下載。但FTP受密碼保護,我想使用PHP對FTP進行身份驗證,並在PHP頁面中提供鏈接,以便當用戶單擊該頁面中的任何FTP鏈接時,應開始下載。提供鏈接下載到密碼保護的FTP
請幫忙。
我有一個FTP文件,我想給它的用戶下載。但FTP受密碼保護,我想使用PHP對FTP進行身份驗證,並在PHP頁面中提供鏈接,以便當用戶單擊該頁面中的任何FTP鏈接時,應開始下載。提供鏈接下載到密碼保護的FTP
請幫忙。
你可以使用PHP's fopen wrappers通過PHP從您的服務器打開FTP位置,並把它傳遞給用戶作爲一個正常的HTTP響應:
// you can use application/octet-stream to force download
header ('Content-Type: ' . $content_type_of_your_file);
// open file and pass it to output
readfile ('ftp://username:[email protected]/path/to/your.file');
正如@Alan提到的,如果FTP服務器是介於在您的網絡外部,這會產生額外的流量。您可以將其封裝在緩存方案中 - 例如只有在您的Web服務器上沒有副本的情況下才能下載,如果是這樣,請檢查新鮮度。然後,您基本上構建了FTP站點的HTTP鏡像,在用戶請求它們之前,先將這些文件預提取到緩存中可能會比較謹慎。
這是一個很好的安全方法,但請記住,如果您的網絡服務器擁有它們,您可能會遇到帶寬限制/成本問題。 – 2010-10-22 11:32:30
通常的免責聲明適用:如果FTP服務器無法訪問,此代碼可能會顯示類似的損壞行爲(等待連接超時)。 – Piskvor 2010-10-22 11:34:01
@Alan:安全性並不是那麼好(FTP只支持純文本身份驗證)。我假定FTP服務器位於附近的某個地方(例如,在只有可信用戶可以上傳的同一家公司的網絡上,並且可以通過webapp下載)。緩存和其他複雜性可能會隨意添加:) – Piskvor 2010-10-22 11:35:12