오늘 밤에는 웹사이트 파일 다운로드의 원리에 대해 아래 코드로 분석해 보겠습니다.
함수 다운로드($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;
){
}
//다운받은 파일을 공유하고, 먼저 메모리로 읽어야 합니다 // 참고: 서버에서 다운로드와 관련된 모든 파일 작업은 먼저 서버 측 메모리로 파일을 읽어야 합니다
$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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.