>  기사  >  백엔드 개발  >  웹사이트 파일 다운로드의 원리에 대한 간략한 논의

웹사이트 파일 다운로드의 원리에 대한 간략한 논의

WBOY
WBOY원래의
2016-07-29 09:08:521953검색

오늘 밤에는 웹사이트 파일 다운로드의 원리에 대해 아래 코드로 분석해 보겠습니다.

함수 다운로드($file_name){
header("Content-type:text/html;charset=utf-8");
// FILE_EXISTS 함수가 중국어를 모르는 것을 피하기 위해 파일 이름을 중국어로 코딩합니다! $file_name = iconv("utf-8","gb2312",$file_name)
$path = $_SERVER['DOCUMENT_ROOT']'
// 다운로드 파일의 절대 디렉터리 $file_path = $path.'/'.$file_name;                                                                                                           
){

echo '파일을 다운로드할 수 있는 항목이 존재하지 않습니다! ';


exit();

}

//다운받은 파일을 공유하고, 먼저 메모리로 읽어야 합니다 // 참고: 서버에서 다운로드와 관련된 모든 파일 작업은 먼저 서버 측 메모리로 파일을 읽어야 합니다
$fp = fopen($file_path, 'r');
$file_size = filesize($file_path); // 파일의 전체 크기를 가져옵니다.

// PHP 다운로드 파일에 필요한 헤더
// 이 코드 클라이언트를 탐색합니다. 서버는 서버가 반환한 파일 형식을 알게 됩니다.
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes"); / 파일 전송 단위는 바이트라고 설명하세요

Header("Accept-Length:".$file_size)
// http 프로토콜로 전송하기 때문에 수신할 길이를 지정해야 합니다
// 다운로드에서 반환된 파일 이름을 브라우저에 알려줍니다.
Header("Content-Disposition: attachment; filename=".$file_name);
$buffer = 1024; // 한 번에 1024바이트만 읽도록 서버에 많은 부담을 주지 마세요
$file_count = 0;
                                                                                                                            동안(!feof($ fp) && $file_count<$file_size){                                                                                    ~                                              이제 메모리에서 fread를 읽고 다운로드하세요

$file_content = fread($fp, $buffer) // $file_content: 매번 읽는 파일 내용
$file_count += $buffer;
echo $file_content; // Echo는 비트 단위로 다운로드하는 것처럼 매번 콘텐츠를 읽습니다.
}
fclose( $fp); }?>


오늘은 파일 다운로드의 원리에 대해 간략하게 설명하였으며, 향후 다운로드 기능에 도움이 되길 바랍니다. 약간의 영감, 그거면 충분해요!



이상에서는 콘텐츠 측면을 포함하여 웹사이트 파일 다운로드의 원리를 간략하게 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.