我想从其他网站获取图片并在我的网站上显示。我只想在页面上显示时将这些图像临时存储在我身边,以便用户认为图像来自我的网站。这可能吗?怎么样?提前谢谢。
例如: -
想象一下,服务器中生成了一些图形(某些网络监控图形,如冒烟),这些图形以.png
格式存储在文件夹中。
例如: - imagine_this_url_has_a_graph(但这只是一个页面)
以便用户想要在其他网站上显示这些图表。
答案 0 :(得分: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;
如果尚未下载远程图像,则会在本地缓存它们,并在请求时将它们输出到浏览器。
答案 1 :(得分:0)
当针对您的服务器发出图像请求时,只需使用fopen()
打开远程图像,然后fpassthru()
将其传递出来。
答案 2 :(得分:0)
fileread()
而不是fopen()
,否则你会收到错误。