2010-01-15 83 views
1

我想从其他网站获取图像并显示在我的网站上。我只想在页面上显示时临时将图像存储在我的身边,以便用户认为图像来自我的网站。有可能吗?怎么样?提前致谢。仅在网页上显示时在php中临时存储图像

例如: - 想象在服务器中生成了一些图(某些网络监视图像吸烟),并且这些图存储在文件夹中作为.png格式。

例如: - imagine_this_url_has_a_graph(但是这仅仅是一个页面)

,使用户想显示在另一个网站的图表。

+0

“让用户认为图片来自我的网站”为什么? – joetsuihk 2010-01-15 07:02:56

+0

根据源站点的策略,这被称为“缓存”或“盗窃”。如果他们不介意使用他们的图像,缓存是礼貌。如果他们这样做,我会非常小心。 – 2010-01-15 07:09:47

+0

“”,以便用户认为图像来自我的网站“为什么?”;取信誉和别人的工作? – 2010-01-15 07:10:37

回答

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

使用fileread()而不是fopen()如果您想要输出图像,否则会出现错误。