2010-08-13 3 views
2

디렉토리 권한을 777로 설정 했음에도 불구하고 생성 된 이미지 파일을 서버의 디렉토리에 기록하는 PHP 스크립트를 여전히 얻을 수 없습니다. 그래서, 내가 생각했던 그 문제에 씨름하는 것보다, 왜 새로운 것을 만들어 내지는 않습니까? 실제로, 나는 더 쉬운 해결책이 있을지도 모른다라고 생각했다. 서버에서 생성 된 이미지 파일 (스트림)을 가져 와서 클라이언트를 "트릭하여"파일이 서버의 디렉토리에 존재하지 않아도되므로 결과를 직접적으로 전달할 수 있습니까? 브라우저?먼저 파일을 서버 디렉토리에 쓰지 않고 생성 된 이미지 파일을 클라이언트에 전달하십시오.

+0

error_reporting (E_ALL)을 추가하여 문제의 원인을 확인 했습니까? – wimvds

+0

이전 문제가 궁금하다면 php 사용자 (www-data?)가 디렉토리에서 읽기/쓰기/실행을 필요로 할뿐만 아니라 모든 상위 디렉토리에서 실행해야합니다. (Semi 관련 질문 : http://stackoverflow.com/questions/3335588/php-include-problem/) –

답변

0

확실히. 바이너리 데이터가 변수 $im에 있다고 가정 해 보겠습니다. 그냥하십시오 :

header("Content-type: image/png"); //change to suit your needs 
echo $im; 

PHP는 HTML이 아닌 데이터를 완벽하게 출력 할 수 있습니다.

+1

@Michael Prescott - 위의 Artefacto의 방법을 사용하면 완벽하게 호환되는 코드이므로 브라우저를 '속임수'하지 않습니다. . 바이너리 데이터는 MIME 유형이 image/png 인 객체이므로, png 데이터이면 radios가 작동합니다. jpeg의 경우 헤더 ("Content-type : image/jpeg")가됩니다. gif의 경우 헤더 ("Content-type : image/gif")가됩니다. – SimonDowdles

0

64 기수 (base64_encode)에 데이터를 변환하고, URI로 사용 URI

이미지로 사용하는 경우 :

data:MIMETYPE;base64,STUFF 

예를 들어,

data:image/png;base64,iVBORAAAA... 

이미지를 표시하는 경우에만

그냥 올바른 MIME에 콘텐츠 형식을 설정하고 내용을 에코.

+0

데이터 URI에 대한 지원은 IE 제품군에서 버그가 있습니다. – Gordon

1

예 가능합니다. 내용 유형 헤더를 "image/png"로 설정 한 다음 이미지 데이터 스트림을 출력하십시오.

header("Content-type: image/png"); 
1

즉석에서 이미지를 만드는 경우 파일을 쓸 필요가 없습니다. PHP 파일 맨 위에서 파일 유형을 'image/png'(또는 무엇이든)로 설정하고 텍스트 대신 그래픽을 작성하십시오.

<?php 
$width = 300; 
$height = 200; 
$im  = imagecreate($width,$height); 
$gray = imagecolorallocate ($im,0xcc,0xcc,0xcc); 
imagefilledrectangle($im,0,0,100,100,$grey); 
header ("Content-type: image/png"); 
imagepng($im); 
?> 
관련 문제