사용자가 서버에서 파일을 다운로드할 수 있도록 설정하려는 경우 아래와 같은 일반적인 솔루션이 작동하지 않을 수 있습니다.
header('Content-Description: File Transfer'); header('Content-Type: image/png'); header('Content-Disposition: attachment; filename="Image.png"'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size); readfile("Image.png");
콘솔에 올바른 헤더가 표시되어도 저장 대화 상자가 나타나지 않을 수 있습니다.
중요한 오류는 Content-Type 헤더에 있습니다. 파일 다운로드의 경우 이미지/png가 아니라 다음과 같습니다.
header('Content-Type: application/octet-stream');
파일 다운로드를 위한 신뢰할 수 있는 헤더 세트는 다음과 같습니다.
$quoted = sprintf('"%s"', addcslashes(basename($file), '"\')); $size = filesize($file); header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=' . $quoted); header('Content-Transfer-Encoding: binary'); header('Connection: Keep-Alive'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); header('Content-Length: ' . $size);
올바른 헤더를 확인하여 헤더가 전송되면 서버에서 파일을 다운로드하려고 할 때 사용자에게 저장 대화 상자가 표시됩니다.
위 내용은 PHP 헤더를 사용하여 파일 다운로드를 안정적으로 강제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!