Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从另一个网站目录获取PHP中的随机图像_Php - Fatal编程技术网

从另一个网站目录获取PHP中的随机图像

从另一个网站目录获取PHP中的随机图像,php,Php,我有大量的图片,我想随机选择,但在免费托管下没有足够的空间来存储它们,所以我创建了第二个网站来保存这些图片 我试过glob命令,它可以处理同一网站中的图像,但似乎对其他网站没有任何作用。目录列表是允许的,通过键入url,我可以看到所有文件,但如果我运行代码,它不会返回任何内容。有人知道如何让它工作吗 代码在这里,回音部分是临时的 $images = glob('http://(mywebsite).com/images/*'); $randomImage = $images[rand(0, co

我有大量的图片,我想随机选择,但在免费托管下没有足够的空间来存储它们,所以我创建了第二个网站来保存这些图片

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

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

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

不确定您是否真正了解http协议。。。您不能通过HTTP“dir”远程目录:您得到的总是一个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);
}
$matches=array();

$count=preg\u match\u all('/\此代码属于远程(映像)服务器端。我建议您在那里编写一个排序为的
rndimg.php
,并插入此代码,当然要引用相应的文件系统

然后,通过执行
文件获取内容('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;

另外,我知道我可以建立一个文件名列表并从中读取,但我不想每次上传任何新内容时都要更改它。你们不能像这样跨服务器读取文件系统-你们需要先向另一台服务器进行身份验证,但考虑到你们是“免费的”托管我怀疑这个选项是否对您开放。我想您可以在图像服务器上编写一个脚本,打印该目录中的图像列表供您阅读-这样您就不必手动维护列表。让PHP处理这个问题也没有什么意义-您最好编写一个javascript解决方案。您知道这个脚本的结构吗远程URL的结构?谢谢,伙计,以前不知道文件的内容,所以这真的很有帮助,现在一切都正常了:D