如何在目录中存储抓取的图像?

时间:2019-12-30 17:48:17

标签: php html web-crawler simple-html-dom

从表单提交名称后,php代码检查目录是否存在,如果目录存在,则从该目录显示图像。但是,如果该目录不存在,则会创建一个新目录。这是问题所在-代码在爬网时工作得很好,但没有将图像存储在指定目录内。问题似乎出在file_put_contents($directory , $image);部分。下面是完整的代码:

<?php

$images = array();
$directory = 'images '.$_POST["name"];
if (file_exists($directory)) {

if ($handle = opendir($directory)) {

while (false !== ($file = readdir($handle))) {

if (preg_match("/\.png$/", $file)) $images[] = $file;

elseif (preg_match("/\.jpg$/", $file)) $images[] = $file;

elseif (preg_match("/\.jpeg$/", $file)) $images[] = $file;

elseif (preg_match("/\.gif$/", $file)) $images[] = $file;

}

shuffle($images);

closedir($handle);

}

?>

<div class="cycle-slideshow" >

<?php

for($i= 0; $i < 3; $i++) {

  foreach ( new DirectoryIterator($directory) as $item ) {            
        if ($item->isFile()) {
            $path = $directory . '/' . $item;   
            echo '<img src="' . $path . '" class="displayed" style="max-width:100%; max-height:460px; position: absolute;
  right: 0px;   top: 0; bottom: 0; margin: auto;   vertical-align: middle; display: inline-block; "

   />';  
        }
    }  

}

  }
else {

    include "simple_html_dom.php";
   $html = file_get_html( "https://www.bing.com/images/search?q=barrack%20obama&FORM=HDRSC2" );
    $images = $html->find('img');
    $image_count = 50; //Enter the amount of images to be shown
    $i = 0;
    foreach($images as $image){
        if($i == $image_count) break;
        $i++;

      mkdir($directory);
      file_put_contents($directory , $image);

    }
        }

?> 

我在做什么错? 任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:0)

检查目录是否具有写权限,是否要创建新目录,而不是使用写权限创建的目录,这样它将存储您的文件并帮助从目录中检索它。

因为您已经在使用mkdir(),而不是像这样尝试设置权限

mkdir("dirname", 0777);