• 30-01-2013, 22:13:42
    #1
    bir websitesinden resimleri alıyorum ama şu şekilde;

    www.site.com/resim1.jpg,www.site.com/resim2.jpg,www.site.com/resim3.jpg
    sonra bunları explode ile parçalıyorum

    $resimadresi = explode(',',$resimadresi);
    sonra şu şekilde sunucuya çekmeye çalışıyorum;
    for($a=1; $a<=25; $a++){
    $ch = curl_init(); 
        // bilgilerin gönderileceği adresi belirleyelim
        curl_setopt($ch, CURLOPT_URL, "$resimadresi[$a]"); 
        // bu satır opsiyonel. eğer referer bilgisi kontrol ediliyorsa diye
        curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com.tr/"); 
        // bu satır opsiyonel. eğer browser bilgisi kontrol ediliyorsa diye
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; tr; rv:1.9.0.2) Gecko/2008091620"); 
        // header bilgisi çıktıya eklensin mi? 0 = hayır, 1 = evet
        curl_setopt($ch, CURLOPT_HEADER, 0); 
        // oluşan çıktı yazılsınmı yoksa kayıt mi edilsin (dosya veya değişkene)? true = kaydet, false = yazdır
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // yönlendirme varsa takip edilsin mi? 0 = hayır, 1 = evet
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
         
        // sayfaya post metodu ile bilgi gönderilecek mi? 0 = hayır, 1 = evet
        curl_setopt($ch, CURLOPT_POST, 0);  
        // curl u çalıştır ve çıktıyı output değişkenine kaydet
        $output = curl_exec($ch);    // curl oturumunu kapat
        curl_close($ch);    // çıktıyı yazdır
    	
    
    
    $content = $output;
    
    $handle = fopen('../../wp-content/uploads/images/'.$resimicinbas.'.jpg', 'w+');
    
    fwrite($handle, $content);
    işte burada ne yapacağımı bilemiyorum yardımcı olur musunuz?
  • 30-01-2013, 22:23:49
    #2
        $array = explode(',', $resimler);
    	
        function curl_get($url)
        {
            $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
                      
            $ch = curl_init();
            
            $timeout = 0;
            
            curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
            
            curl_setopt($ch, CURLOPT_URL, $url);
            
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
            
            curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
        
            $xml = curl_exec($ch);
            
            curl_close($ch);
            
        return $xml;
        }
        
        function curl_download($url, $file)
        {
            $handle = fopen($file, 'wb');
        
            fwrite($handle, curl_get($url));
        
            fclose($handle);
            
        return TRUE;
        }
    
        foreach($array as $image)
        {
    		$image = explode('/', trim($image));
    		$filename = end($image);
    		
    		curl_download($image, './wp-content/uploads/images/' . $filename);
        }
    deneme imkanım olmadığı gibi umarım hata çıkartmaz, en baştaki $resimler sizin virgüllü metniniz olacak. resim1.jpg, resim2.jpg gibi...
  • 30-01-2013, 22:40:31
    #3
    öncelikle çok teşekkürler kod çalışıyor ancak sunucuya çekilen resimler 0 byte görünüyor. bir de $filename i $yazibaslik gibi bir değişken yapmak istiyorum. çektiğim sitedeki başlık gibi değil de kendi yazımın başlığı gibi yapmak istiyorum.
  • 31-01-2013, 19:04:01
    #4
    http://www.youtube.com/playlist?list=PLC1D5E7333D61443E
    daha önce burada anlatmıştım, incelerseniz istediğiniz şekilde bir sistem yapmasını öğrenebilirsiniz zaten resim adreslerini çekmenizde sorun yok ben input ile almıştım adresleri siz adresleri kendiniz çekiyorsunuz kodu CURL kodları yerine kullanıp adresi de inputtan aldığım veri yerine sizin adres değişkeninizi şuan ki curl kodunuzda olduğu gibi kullanarak halledebilirsiniz. Eğer balığı tutamazsanız, buradan veya pm ile bildirin kodları yazıp göndereyim Kolay gelsin.
  • 31-01-2013, 22:49:21
    #5
    wdr.leo adlı üyeden alıntı: mesajı görüntüle

    http://www.youtube.com/playlist?list=PLC1D5E7333D61443E
    daha önce burada anlatmıştım, incelerseniz istediğiniz şekilde bir sistem yapmasını öğrenebilirsiniz zaten resim adreslerini çekmenizde sorun yok ben input ile almıştım adresleri siz adresleri kendiniz çekiyorsunuz kodu CURL kodları yerine kullanıp adresi de inputtan aldığım veri yerine sizin adres değişkeninizi şuan ki curl kodunuzda olduğu gibi kullanarak halledebilirsiniz. Eğer balığı tutamazsanız, buradan veya pm ile bildirin kodları yazıp göndereyim Kolay gelsin.
    videoları izledim ama benim olay biraz farklı;
    @miscel arkadaşın kodu çalışıyor sadece hosta çektiği dosyalar 0 byte görünüyor.

    bir de resimleri çektikten sonra $baslik-1.jpg $baslik-2.jpg gibi bir yapıda sunucuya kaydetsin istiyorum . bu konuda balığa ihtiyacım olduğunu söyleyebilirim.
  • 31-01-2013, 23:22:03
    #6
    Kimlik doğrulama veya yönetimden onay bekliyor.
    miscel 'in kodlarını biraz değiştirdim ve istediğin gibi olduğunu düşünüyorum. Sürekli CURL aç-kapa sistemi yoracağı ve işlem süresini artıracağı için tek çelsede yaptım.
    <?php
    $resimler= "http://www.geekpedia.com/G/Geekpedia%20Logo.png,http://www.geekpedia.com/P/Tutorials/Programming/PHP/UPS-Shipping-Calculator/UPS-Icon.png";
    $array = explode(',', $resimler);
    $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";   
    $ch = curl_init();
    $timeout = 0;
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
    $say = 0;
    $dosyagenelad= "baslik";
    foreach($array as $url){
    	$say++;
    	curl_setopt($ch, CURLOPT_URL, $url);
    	$xml = curl_exec($ch);
    	$image = explode('.', trim($url));
        $uzanti = end($image); 
    	$handle = fopen($dosyagenelad."_".$say.".".$uzanti, 'wb');
    	fwrite($handle, $xml);  
    	fclose($handle);
    }
    curl_close($ch);
    ?>
  • 31-01-2013, 23:50:35
    #7
    interkolik adlı üyeden alıntı: mesajı görüntüle
    miscel 'in kodlarını biraz değiştirdim ve istediğin gibi olduğunu düşünüyorum. Sürekli CURL aç-kapa sistemi yoracağı ve işlem süresini artıracağı için tek çelsede yaptım.
    <?php
    $resimler= "http://www.geekpedia.com/G/Geekpedia%20Logo.png,http://www.geekpedia.com/P/Tutorials/Programming/PHP/UPS-Shipping-Calculator/UPS-Icon.png";
    $array = explode(',', $resimler);
    $user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";   
    $ch = curl_init();
    $timeout = 0;
    curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
    $say = 0;
    $dosyagenelad= "baslik";
    foreach($array as $url){
    	$say++;
    	curl_setopt($ch, CURLOPT_URL, $url);
    	$xml = curl_exec($ch);
    	$image = explode('.', trim($url));
        $uzanti = end($image); 
    	$handle = fopen($dosyagenelad."_".$say.".".$uzanti, 'wb');
    	fwrite($handle, $xml);  
    	fclose($handle);
    }
    curl_close($ch);
    ?>
    hocam maalesef çalışmadı.
  • 01-02-2013, 00:12:47
    #8
    yakamoz01 adlı üyeden alıntı: mesajı görüntüle
    hocam maalesef çalışmadı.
    Sorun ne? Ben denedim de verdim bende çalışıyor.
  • 01-02-2013, 05:21:02
    #9
    Farklı değil hocam aynı sadece üzerinde biraz edit gerekiyordu ama madem balık gerek verelim hemen
    Öncelikle sitenizde barınacak klasör adını upload olarak ayarladım, bunu siz değiştirebilirsiniz. Bu klasörü kodun bulunduğu dizinde açın ve chmod'unu 777 yapmayı unutmayın.
    Bende resim çeken bir sistem olmadığından bir siteden 3 adet resim linki alıp bunu $resimadresi değişkenine atadım siz onun yerine çektiğiniz url leri kullanmaya devam edebilirsiniz onu silerek.
    Ardından gelelim kodumuza;
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Url'den Php ile Resim upload etmek</title>
    </head>
    <body>
    <?php
    $resimadresi = "http://www.ask-resimleri.com/wp-content/uploads/2012/04/3-boyutlu-soyut-resimler2-600x375.jpg,http://www.ask-resimleri.com/wp-content/uploads/2012/04/3-boyutlu-soyut-resimler3-600x375.jpg,http://www.ask-resimleri.com/wp-content/uploads/2012/04/3-boyutlu-soyut-resimler-600x375.jpg";
    $resimadresi = explode(',',$resimadresi);	
    for($a=1; $a<=3; $a++){
    	$dosya_adi = rand(10,1000); 
    	$d_tip = explode('.',$resimadresi[$a]); // gönderilen dosya url yi . larından parçala
    	if($d_tip['3'] == 'jpg' or $d_tip['3'] == 'png' or $d_tip['3'] == 'gif'){ 
    	$yeni_dosya_adi = 'upload/'.$dosya_adi.'.'.$d_tip['3'];
    	//yeni bir dosya adı oluştur upload dizinini yol olarak ata ve random sayıyla , dosya tipini birleştir
    	if(copy($resimadresi[$a],$yeni_dosya_adi)){ // url deki dosyayı yeni dosya adıyla belirtilen konuma kopyala,gerçekleştiyse
    		echo 'İşleminiz başarıyla gerçekleşti. Dosyanıza ulaşmak için;
    		<a href="'.$yeni_dosya_adi.'" target="_blank">Tıklayınız</a>
    		';// Sonuç yazdır ve linki göster.
    	}else{ // gerçekleşmediyse
    		$hata = error_get_last(); // son hatayı al 
    		echo 'İşleminiz gerçekleşmedi bir hata oluştu.
    		Hata Tipi : '.$hata['type'].'
    		Hata Adı : '.$hata['message'].'
    		'; // Hata tipi ve mesajı belirt
    	}
    	}else{ // Eğer dosya türü belirtilen dosya türlerinde değilse
    		echo 'Verdiğiniz link problemli veya dosya türü desteklenmiyor.<br />Sadece jpg,png,gif formatlarında dosyaları upload edebilirsiniz.';	// uyar.
    	}
    	
    }
    ?>
    
    <!-- Son -->
    </body>
    </html>
    Bu kodun çalışır hali; http://yazilimyazari.com/r10/resim/

    Kolay gelsin