출력 PHP
답변
$file = '../image.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
readfile($file);
<?php
header("Content-Type: $type");
readfile($file);
짧은 버전입니다. 더 멋진 것들을 만들기 위해 할 수있는 몇 가지 작은 것들이 있지만, 그것은 당신을 위해 일할 것입니다. 출력
header('Content-Type: ' . $type);
그리고 readfile
이미지의 내용 :
readfile($file);
어쩌면
header('Content-type: image/jpeg');
readfile($image);
당신이 바로 그 내용 유형을 보낼 header을 사용할 수 있습니다 (아마 ne cessary하지만, 단지) 경우에 당신은 너무 Content-Length 헤더를 보낼 필요가 없습니다 것입니다 :
header('Content-Length: ' . filesize($file));
참고 : 당신이 당신의 이미지 데이터 보다 다른 출력하지 아무것도 할 수 있는지 확인하십시오 (더 흰색을 공백, 예를 들어)이거나 더 이상 유효한 이미지가 아닙니다.
이 시도 :
<?php
header("Content-type: image/jpeg");
readfile("/path/to/image.jpg");
exit(0);
?>
자신이 mod_xsendfile 같은 (아파치) 도구가 상당히 읽고 PHP에서 파일을 인쇄하는 것보다 더 나은 웹 서버를 구성 할 수있는 자유가있는 경우. 귀하의 PHP 코드는 다음과 같습니다 :
header("Content-type: $type");
header("X-Sendfile: $file"); # make sure $file is the full path, not relative
exit();
mod_xsendfile은 X-Sendfile 헤더를 가져 와서 브라우저 자체에 파일을 보냅니다. 이것은 특히 큰 파일의 경우 성능면에서 큰 차이를 만들 수 있습니다. 제안 된 솔루션의 대부분은 전체 파일을 메모리로 읽어 들인 다음 인쇄합니다. 20kbyte의 이미지 파일은 괜찮습니다.하지만 200MB의 TIFF 파일을 가지고 있다면 문제가 생길 수 있습니다.
파일 크기와 잠재적 인 메모리 문제에 대한 흥미로운 설명이 모두 포함되어 있기 때문에 읽었습니다. – Ian
$file = '../image.jpg';
if (file_exists($file))
{
$size = getimagesize($file);
$fp = fopen($file, 'rb');
if ($size and $fp)
{
// Optional never cache
// header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');
// header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
// header('Pragma: no-cache');
// Optional cache if not changed
// header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($file)).' GMT');
// Optional send not modified
// if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) and
// filemtime($file) == strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']))
// {
// header('HTTP/1.1 304 Not Modified');
// }
header('Content-Type: '.$size['mime']);
header('Content-Length: '.filesize($file));
fpassthru($fp);
exit;
}
}
정확히 필요한 부분이 있습니다! – rinchik
'$ 크기 [ 'mime']'??! – Michael
@Michael [via php.net] (http://php.net/manual/de/function.getimagesize.php) _getimagesize() 함수는 주어진 이미지 파일의 크기를 결정하고 함께 치수를 반환합니다. 일반적인 HTML IMG 태그 및 해당 HTTP 내용 유형 내에서 사용할 파일 유형 및 높이/너비 텍스트 문자열 ._ – Pixelkrieg
당신이 바로 그 MIME 타입을 얻을 수 finfo
(PHP를 5.3+)를 사용할 수 있습니다.
$filePath = 'YOUR_FILE.XYZ';
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$contentType = finfo_file($finfo, $filePath);
finfo_close($finfo);
header('Content-Type: ' . $contentType);
readfile($filePath);
PS : 당신은 Content-Length
을 지정할 필요가 없습니다, 아파치가 당신을 위해 그것을 할 것입니다.
$file = '../image.jpg';
$type = 'image/jpeg';
header('Content-Type:'.$type);
header('Content-Length: ' . filesize($file));
$img = file_get_contents($file);
echo $img;
이것은 저에게 유용합니다! 코드 점화기에서 테스트했습니다. readfile을 사용하면 이미지가 표시되지 않습니다. 때로는 jpg 만 표시 할 수도 있고 때로는 큰 파일 만 표시 할 수도 있습니다. 그러나 "file_get_contents"로 변경 한 후, 나는 맛을 얻고 작동합니다 !! 이것은 스크린 샷입니다 : Screenshot of "secure image" from database
- 1. greybox에서 PHP 출력 디스플레이
- 2. PHP HTML 테이블 출력
- 3. PHP 출력 작은 따옴표
- 4. PHP CRC32 길이 출력
- 5. PHP 출력 버퍼링 중지
- 6. 출력 함수 mysql php
- 7. PHP 포함/에코 출력
- 8. 콘텐츠의 PHP 실시간 출력
- 9. 이상한 PHP 출력
- 10. PHP - 플러그인 출력 제한
- 11. PHP 출력 디버그
- 12. 출력 버퍼링 문제 - PHP
- 13. khtml2png php 출력 없음
- 14. PHP 폼을위한 HTML 출력
- 15. PHP : 다른 기능과 출력
- 16. Apache/PHP 출력 캐싱
- 17. PHP smarty 데이터베이스 출력
- 18. PHP 출력 버퍼링 검사?
- 19. 절의 PHP 텍스트 출력
- 20. PHP 출력 완료 알림
- 21. 이상한 PHP 출력 손상
- 22. PHP 출력 버퍼링
- 23. PHP fwrite 대 출력 파이핑
- 24. PHP 및 CSS 출력 문제
- 25. 멋지 PHP/템플릿 출력 문제
- 26. PHP 출력 버퍼링이 작동하지 않습니다.
- 27. PHP mysql 셔플 출력 속도
- 28. 비공식 PHP 날짜 출력 라이브러리
- 29. 출력 렌더링을위한 xslt 또는 PHP
- 30. TD의 PHP/MySQL 출력 데이터
PHP 및/또는 서버가 콘텐츠 길이를 처리합니다. –
편의를 위해 콘텐츠 길이 헤더. –
이미지를 절대 경로로 액세스하려고 할 때 어떤 이유로 파일 크기가 작아서 그 줄을 주석 처리 했으므로 코드가 정상적으로 작동합니다. – kiranvj