在 PHP 腳本中,從 FTP 伺服器取得檔案是一項常見任務。然而,在將這些文件發送到使用者的瀏覽器之前將它們儲存在 Web 伺服器上可能是不可取的。本文探討如何從 FTP 伺服器直接將檔案下載到瀏覽器,繞過伺服器儲存並避免重新導向。
初始程式碼使用ftp_get 將FTP 檔案擷取到記憶體) 和ob_start():
<code class="php">public static function getFtpFileContents($conn_id , $file) { ob_start(); $result = ftp_get($conn_id, "php://output", $file, FTP_BINARY); $data = ob_get_contents(); ob_end_clean(); if ($resul) return $data; return null; }</code>
要將檔案直接串流到瀏覽器而不儲存,請刪除輸出緩衝:
<code class="php">ftp_get($conn_id, "php://output", $file, FTP_BINARY);</code>
要包含Content-Length 標頭,請使用ftp_size() 查詢檔案大小:
<code class="php">$conn_id = ftp_connect("ftp.example.com"); ftp_login($conn_id, "username", "password"); ftp_pasv($conn_id, true); $file_path = "remote/path/file.zip"; $size = ftp_size($conn_id, $file_path); header("Content-Type: application/octet-stream"); header("Content-Disposition: attachment; filename=" . basename($file_path)); header("Content-Length: $size"); ftp_get($conn_id, "php://output", $file_path, FTP_BINARY);</code>
請記得根據需要實作錯誤處理。有關 FTP 檔案處理的更多信息,請參閱「從 FTP 列出並下載點擊的檔案」等資源。
以上是如何在沒有伺服器儲存的情況下用PHP直接將FTP檔案下載到瀏覽器?的詳細內容。更多資訊請關注PHP中文網其他相關文章!