v2.5.2
Giriş yap

file_get_contents ile çoklu resim kaydı

emmir2
406 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Kayıt yapıyor ama görseller açılmıyor ve bir hata basıyor

Warning: file_get_contents(public/uploads/logo/beykonyenilogo2.png): failed to open stream: No such file or directory in C:\xampp\htdocs\veri-cekimi\index.php on line 19

<?php
$web = 'https://www.beykon.com/urunler';
$html = file_get_contents($web);
preg_match_all('/<img[^>]+src=["\']([^"\']+)["\']/i', $html, $img);
$image_urls = $img[1];
foreach($image_urls as $image_url) {
  $image_data = file_get_contents($image_url);
  $file_name = basename($image_url);
  file_put_contents('upload/' . $file_name, $image_data);
}
?>
Cevap yaz
Cevaplar (1)
f4kor4ll
637 gün önce

Hatanın nedeni, hedef klasörünüzün doğru adlandırılmamış olması. Kodunuzda hedef klasörünüzü "upload" olarak adlandırmışsınız ancak hatanın gösterdiği klasör adı "public/uploads" şeklindedir.

Aşağıdaki kod, "public/uploads" klasöründe her bir görüntü dosyası için ayrı bir klasör oluşturur ve görüntü dosyalarını bu klasörlere kaydeder. Dosyaların kaydedilme yeri ve adlandırılması hakkında daha fazla kontrol sağlar.

$web = 'https://www.beykon.com/urunler';
$html = file_get_contents($web);
preg_match_all('/<img[^>]+src=["\']([^"\']+)["\']/i', $html, $img);
$image_urls = $img[1];

foreach($image_urls as $image_url) {
  $image_data = file_get_contents($image_url);
  $file_name = basename($image_url);
  $folder_name = 'public/uploads/' . uniqid() . '/';
  mkdir($folder_name);
  $file_path = $folder_name . $file_name;
  file_put_contents($file_path, $image_data);
}

Bu kodda, uniqid() fonksiyonu her seferinde benzersiz bir klasör adı oluşturur. $folder_name değişkeni, bu benzersiz klasör adı ile birlikte hedef klasörün tam yolu olarak tanımlanır. Sonra, mkdir() fonksiyonu, bu klasörü oluşturur. Dosya adı ve yolu, `$file_path değişkeninde tanımlanır ve file_put_contents() fonksiyonu kullanılarak görüntü dosyası kaydedilir.