Php ile Dosya indirme (curl)
Kerem Bekman | Kategori: PHP

Curl ile dışarıdan toplu olarak dosya çekmem gerektiğinde yazdığım ufak bi’ php betiği.. Biraz daha kullanılabilir hale gelmiş hali :)
Ayrıca HTTP_VERSION ‘ u 2.0 yerine 1.0 kullanmamın nedeni, 2.0′da bazen gelen veri paketlerde eksik veri olması yüzünden %100 güvenilirlik sağlamıyordu.. Çözüm olarak cappytoi’nun fikriyle Header’e 1.0 HTTP_VERSION’u yollayarak daha net paketler elde etmiş olduk..
function dosya_indir($link,$name=null)
{
$link_info = pathinfo($link); //Yol bilgilerini değişkene atıyoruz.
$uzanti = strtolower($link_info['extension']); //Dosyanın uzantısını değişkene atıyoruz.
$file = ($name) ? $name.'.'.$uzanti : $link_info['basename']; //Eğer kayıt edilmek üzere dosya adı girilmişse, girilen dosya adını değişkene atıyouruz, girilmemişse orjinal adını değişkene atıyoruz.
$curl = curl_init($link);
$fopen = fopen($file,'w');
curl_setopt($curl, CURLOPT_HEADER,0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_0);
curl_setopt($curl, CURLOPT_FILE, $fopen);
curl_exec($curl);
curl_close($curl);
fclose($fopen);
}
Kullanım #1
dosya_indir('http://site/a.zip');
PHP dosyasının bulunduğu dizine orjinal adında yani [a.zip] şeklinde dosyayı kayıt eder.
Kullanım #2
dosya_indir('http://site/a.zip','dosya_adi',);
PHP dosyasının bulunduğu dizine 2. parametre yani [dosya_adi.zip] şeklinde dosyayı kayıt eder.
yahu bir türlü anlayamadım.. benim istediğim mesela serverde bir klasör açıp içindeki dosyaları linke tıklandığında indirtmek.. nasıl yapıcam
Klasör fonksiyonları ile, klasör içindeki tüm dosyaları döngüyle beraber yukarıdaki fonksiyona sokabilirsiniz..