2010-01-15 4 views
1

다른 사이트의 이미지를 가져 와서 내 사이트에 표시하고 싶습니다. 나는 페이지에 보여 질 때만 일시적으로 내 옆에 이미지를 저장하여 사용자가 내 사이트에서 이미지가 올 것으로 생각할 수 있도록하고 싶습니다. 가능한가요? 방법? 미리 감사드립니다.웹 페이지에 표시 중일 때만 임시 저장 이미지

예 : - 서버에서 생성 된 그래프가 있습니다 (smokeping과 같은 일부 네트워크 모니터링 그래프).이 그래프는 .png 형식의 폴더에 저장됩니다.

예 : - imagine_this_url_has_a_graph은 (그러나 이것은 단지 페이지입니다)

그래서 사용자가 다른 웹 사이트에서 그 그래프를 보여주고 싶어요.

+0

"사용자 생각 이미지가 내 사이트에서 오는 것"이유는 무엇입니까? – joetsuihk

+0

원본 사이트의 정책에 따라 "캐싱"또는 "도난"이라고합니다. 그들이 이미지 사용에 신경 쓰지 않는다면, 캐싱은 호의입니다. 만약 그렇다면, 나는 매우 조심 스러울 것이다. –

+0

""사용자의 이미지가 내 사이트에서 오는 것이라고 생각합니다. "왜?"; 누군가 elses의 일을 신용하고 출자합니까? –

답변

0

이미지 요청이 서버에 대해 이루어지면 fopen()을 사용하여 원격 이미지를 열고 fpassthru()을 전달하면됩니다.

1

간단한 캐싱 시스템이이를 수행합니다. 같은 HTML 파일을 감안할 때 :

<body> 
<img src="imagesource.php?file=1" /> 
</body> 

을 당신이 좋아하는 이미지 데이터 소스 (imagesource.php) 만들 수 있습니다

<?php 
$files = array(
    'http://somesite.com/image_to_cache.gif', 
    'http://somesite.com/image_to_cache2.gif' 
); 

if(!isset($_REQUEST['file']) || !isset($files[$_REQUEST['file']])) { 
    header('HTTP/1.0 404 Not Found'); 
    exit; 
} 

// do we already have the cached file? 
$requested_file = $files[$_REQUEST['file']]; 
$cache_dir = '/tmp/cached_images'; 
$cache_file = md5($requested_file); 
$cache_path = $cache_dir . '/' . $cache_file; 

header('Content-Type: image/gif'); 

if(file_exists($cache_path)) { 
    readfile($cache_path); 
    exit; 
} 

//need to create the cache. 
$data = file_get_contents($requested_file); 
file_put_contents($cache_path, $data); 

echo $data; 
그들은 이미 다운로드되지 않은 경우 로컬 원격 이미지를 캐시 할

을, 요청시 브라우저에 출력 할 수 있습니다.

0

fopen() 대신에 fopen()을 사용하면 이미지를 출력 할 수 있습니다. 그렇지 않으면 오류가 발생합니다.

관련 문제