ホームページ >バックエンド開発 >PHPチュートリアル >サーバーストレージを使用せずに PHP で FTP ファイルをブラウザに直接ダウンロードするにはどうすればよいですか?

サーバーストレージを使用せずに PHP で FTP ファイルをブラウザに直接ダウンロードするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-03 06:27:30592ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。