>  기사  >  백엔드 개발  >  서버 저장소 없이 PHP에서 FTP 파일을 브라우저에 직접 다운로드하는 방법은 무엇입니까?

서버 저장소 없이 PHP에서 FTP 파일을 브라우저에 직접 다운로드하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-03 06:27:30533검색

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

서버 저장이나 리디렉션 없이 FTP에서 브라우저로 파일 다운로드

PHP 스크립트에서는 FTP 서버에서 파일을 가져오는 것이 일반적인 작업입니다. 그러나 이러한 파일을 사용자의 브라우저로 보내기 전에 웹 서버에 저장하는 것은 바람직하지 않을 수 있습니다. 이 기사에서는 서버 저장을 우회하고 리디렉션을 피하면서 FTP 서버에서 브라우저로 직접 파일을 다운로드하는 방법을 살펴봅니다.

원본 코드

초기 코드는 ftp_get( ) 및 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으로 문의하세요.