用于读取远程目录的选项

时间:2011-02-04 21:10:49

标签: php parsing directory

我有一个基于特定条件显示图像的脚本。当没有满足任何条件时,我想随机显示一个标准(备份)图像。其他图像位于远程服务器上。我已经读过你无法读取远程服务器上的目录,这是有道理的。

我最好将文件放入远程服务器的图像目录中,该目录输出所有图像文件名,以便我可以用其他服务器解析它吗?有更简单的方法吗?

我不想使用FTP(http://php.net/manual/en/book.ftp.php)。

基本上只需获取该文件夹中图像的名称,我有哪些选择?

谢谢, 莱恩

更新

@ mario's answer是轻量级的,就像魅力一样。这正是我认为我想要的解决方案,但是在考虑了它之后,甚至@mario会以不同的方式阅读,我决定选择@ bensiu's answer,因为对我而言,控制和安全性更强比方便重要。使用@ mario的方法,很难知道您获得的数据是否有任何好处(缺乏控制)并且您正在暴露您的目录/某些服务器信息(安全性)。 @bensiu的建议涉及第二个文件(不方便),但提供了我最终决定使用的控制和安全性!

谢谢你们两位!

-Ryan

3 个答案:

答案 0 :(得分:2)

我更喜欢像@bensiu指出的那样精确而专用的处理程序脚本。

但另一种方法是读出目录列表。一个简单的Apache生成的mod_index列表就足够了:

$html = file_get_contents("http://example.com/images/");
preg_match_all('/<a href="([-\w\d.]+\.(jpeg|png|gif))"/', $html, $uu);
$files = $uu[1];

答案 1 :(得分:1)

我希望你至少可以访问远程服务器......

您可以放置​​将在本地执行作业的脚本“A”,以优先格式返回图像列表(原始文本,JSON,XML ...),此脚本将由curl从您的服务器远程调用。 ......

明智地确保当你调用脚本“A”时,你至少传递一些秘密密钥以防止无法访问(不是完美的解决方案,但可能是应该的)

答案 2 :(得分:0)

如果您的服务器上启用了PHP5并启用了HTTP流包装器,则将其复制到本地文件非常简单容易:

copy('http://somedomain.com/file.jpeg', '/tmp/file.jpeg');

ome hosts禁用copy()函数然后你可以自己制作 -

<?php 
    function copyemz($file1,$file2){ 
          $contentx =@file_get_contents($file1); 
                   $openedfile = fopen($file2, "w"); 
                   fwrite($openedfile, $contentx); 
                   fclose($openedfile); 
                    if ($contentx === FALSE) { 
                    $status=false; 
                    }else $status=true; 

                    return $status; 
    } 
?>