0

我有很多图像,我想随机选择,但是在免费托管下没有足够的空间来存储它们,所以我创建了第二个网站来保存图像。

我尝试了 glob 命令,它适用于同一网站中的图像,但似乎对其他网站没有任何作用。目录列表是允许的,通过输入 url,我可以看到所有文件,但如果我运行代码,它不会返回任何内容。有谁知道让它工作的方法?

代码在这里,回显部分是临时的

$images = glob('http://(mywebsite).com/images/*');
$randomImage = $images[rand(0, count($images) - 1)];
echo count($images);
4

2 回答 2

2

此代码属于远程(图像)服务器端。我建议你rndimg.php在那里写一个,并插入这段代码,引用相应的。当然是文件系统。

然后,通过这样做file_get_contents('http://imgserver/rndimg.php');或类似的事情,您每次都可以检索随机图像。

一个例子rndimg.php是这样的:

$images = glob('*.png');
$randomImage = $images[rand(0, count($images) - 1)];
header('Content-Description: File Transfer');
header('Content-Type: image/png');
header('Content-Disposition: attachment; filename='.basename($randomImage));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($randomImage));
readfile($randomImage);
exit;
于 2013-11-07T19:55:22.923 回答
0

不确定您是否真的了解 http 协议...您不能通过 HTTP“目录”远程目录:您得到的始终是 HTML 响应。所以你可以做的是从远程获取目录列表:

$page = file_get_contents('http://(mywebsite).com/images');

然后解析 $page 中的 HTML 代码以获取文件,例如

$matches = array();
$count = preg_match_all('/\<a href=\"([^\"]+)\"\>/',$page,$m);
foreach($matches[1] as $file) {
    $img = file_get_contents('http://(mywebsite).com/images/'.$file);
}

并处理图像。

于 2013-11-07T19:54:44.433 回答