首頁 >後端開發 >php教程 >如何在沒有伺服器儲存的情況下用PHP直接將FTP檔案下載到瀏覽器?

如何在沒有伺服器儲存的情況下用PHP直接將FTP檔案下載到瀏覽器?

Susan Sarandon
Susan Sarandon原創
2024-11-03 06:27:30595瀏覽

How to Download an FTP File Directly to the Browser in PHP Without Server Storage?

從 FTP 下載檔案到瀏覽器,無需伺服器儲存或重新導向

在 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 標頭

要包含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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn