2011-08-26 3 views
2

잘 작동하는 브라우저에 이미지를 출력하는 다음 스크립트가 있습니다. 내가보기에이 동일한 코드를 삽입 할 때Kohana 3.2보기에서 출력 이미지

$file_to_output=$_SERVER['DOCUMENT_ROOT'].'/static/imgs/uploads/20110318172207_16.jpg'; 
header('Content-Type: image/jpeg'); 
$raw=imagecreatefromjpeg($file_to_output); 

// Output the image 
imagejpeg($raw); 

// Free up memory 
imagedestroy($raw); 

는 더 이상 일을하고이 같은 이상한 문자의 무리 제공하지 않습니다 JFIF> CREATOR을 : GD-JPEG v1.0을을 (IJG JPEG v62 사용), 기본 화질 C

뷰에서 작동하려면 무엇을해야합니까?

+0

Response#send_file를 참조하여 행동 코드가 같아야하므로

모든 응답 논리입니다 사용 하시겠습니까? – Kemo

+0

Kohana를 사용합니다. 3.2 – waterschaats

답변

5

보기에 넣으면 안됩니다. 모든 뷰 출력은 나중에 버퍼링되어 Response 객체를 통해 반환됩니다.

$path = DOCROOT.'static/imgs/uploads/20110318172207_16.jpg'; 

$this->response->headers('content-type',File::mime($path)) 
    ->body(file_get_contents($path)); 
+0

감사합니다. 그래서보기를 전혀 사용하지 않습니까? 나는 여전히 그것이 '이미지가 손상되었거나 잘린'이미지를 출력하도록 작동하지 않습니다. 그러나 파일 102kb. – waterschaats

+0

나는 일한다! 다시 한번 감사드립니다. 나는 다음 줄 위의 리턴 값을 가지고있다. ' – waterschaats

3

또 다른 방법은 다음과 같습니다 :

$path = DOCROOT.'static/imgs/uploads/20110318172207_16.jpg'; 

// Send file as download 
$this->response->send_file($path); 

// Send file as inline 
$this->response->send_file($path, NULL, array('attachment' => 'inline')); 

// Another way to send as inline 
$this->response->body(file_get_contents($path)); 
$this->response->send_file(TRUE, $path); 

당신이 Kohana의 어떤 버전입니다

+0

그는 브라우저에 이미지를 출력하고, 그것을 보내지 않고 – Kemo

+0

보낼 수있는 옵션이있다. (예 :'SYSPATH ') 또는 die ('No Direct Script Access '); 첨부 파일이나 인라인으로이'send_file' 메쏘드를 사용하여 :) – SpadXIII

+0

확실히 여기에 붙여 넣은 코드에 대해 말하고 있습니다 :) – Kemo