Php sayfasından header ile download yapınca indirme yöneticileri neden 1 parça halinda indirir.Bunun çözümü var mı?10 parçaya ayırarak indirilebilse harika olur.
Php sayfasından header ile download yapınca indirme yöneticileri neden 1 parça halinda indirir.Bunun çözümü var mı?10 parçaya ayırarak indirilebilse harika olur.
eger makina dili ile alakalı deilse..
çünkü header direct yonlendirir...
başka şeilkde direct downloada tıkladıın zaman program kendini hazırlar ve belleğe alır bu sayede parçalara böler...
ama header ile gittii zaman demek burda programa "Sürpriz" Dercesine karşısına bi download cıkarıyoruz... ve programda doğal olarak boynunu büküp suratını asıyor ve hesabını kitabını yapmadan indirior
not : acaba kuruyu kekeden almasam mı artık.. cünkü carpmaya başlıyor geceleri...?
Dosya boyutunu da header ile göndermeyi denediniz mi?PHP Kodu:header('Content-Length: '.filesize($dosya));
Evet dosya boyutu ile de denedim.Parçalamak için sorgu gönderiyor ama olumsuz yanıt geliyor ki olmuyor ve devam edebilmeye "hayır" yazıyor.İnternet download manager ile aldım bu sonucu.
Galiba mümkün değil.
manual'in fread kısmında gördüğüm bir örnek ile yapılabildiğini test ettim:
PHP Kodu:<?
//kullanım şekli: dosya.php?klasor=deneme&dosya=1.pdf
$dosya=$_GET['dosya'];
$dosya=str_replace("/","",$dosya);
$klasor=$_GET['klasor'];
$klasor=str_replace("/","",$klasor);
$klasor=str_replace(".","",$klasor);
if(empty($klasor)){$indir=$dosya;}
else{$indir="".$klasor."/".$dosya."";}
$path=pathinfo($indir);
if (!is_file($indir)) { die("<b>Dosya bulunamadı</b>"); }
switch ($path['extension']){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
case "php":
case "htm":
case "html":
case "txt": die("<b>Bu dosyayı indiremezsiniz!</b>"); break;
}
header("Cache-Control:");
header("Cache-Control: public");
header("Content-Type: $ctype");
header("Accept-Ranges: bytes");
$boyut=filesize($dosya);
//check if http_range is sent by browser (or download manager)
if(isset($_SERVER['HTTP_RANGE'])) {
list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
//if yes, download missing part
str_replace($range, "-", $range);
$boyut2=$boyut-1;
$yeni_boyut=$boyut2-$range;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $yeni_boyut");
header("Content-Range: bytes $range$boyut2/$boyut");
} else {
$size2=$size-1;
header("Content-Range: bytes 0-$boyut2/$boyut");
header("Content-Length: ".$boyut);
}
//open the file
$fp=fopen("$dosya","rb");
//seek to start of missing part
fseek($fp,$range);
//start buffered download
while(!feof($fp)){
//reset time limit for big files
set_time_limit(0);
print(fread($fp,1024*8));
flush();
ob_flush();
}
fclose($fp);
?>
yine tek parça bende.sizde oldu mu?
Flashget ile deniyorum, hem parçalı şekilde iniyor hem de devam edebilme özelliğine sahip oluyor. Dosya adı ve tamamlanması ile ilgili bir problem gördüm. En son denediğim dosya hali:
PHP Kodu:<?
//kullanım şekli: dosya.php?klasor=deneme&dosya=1.pdf
$dosya=$_GET['dosya'];
$dosya=str_replace("/","",$dosya);
$klasor=$_GET['klasor'];
$klasor=str_replace("/","",$klasor);
$klasor=str_replace(".","",$klasor);
if(empty($klasor)){$indir=$dosya;}
else{$indir="".$klasor."/".$dosya."";}
$path=pathinfo($indir);
if (!is_file($indir)) { die("<b>Dosya bulunamadı</b>"); }
switch ($path['extension']){
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
case "mp3": $ctype="audio/mpeg"; break;
case "wav": $ctype="audio/x-wav"; break;
case "mpeg":
case "mpg":
case "mpe": $ctype="video/mpeg"; break;
case "mov": $ctype="video/quicktime"; break;
case "avi": $ctype="video/x-msvideo"; break;
case "php":
case "htm":
case "html":
case "txt": die("<b>Bu dosyayı indiremezsiniz!</b>"); break;
}
header("Cache-Control:");
header("Cache-Control: public");
header("Content-Type: $ctype");
header("Accept-Ranges: bytes");
$boyut=filesize($dosya);
//check if http_range is sent by browser (or download manager)
if(isset($_SERVER['HTTP_RANGE'])) {
list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']);
//if yes, download missing part
str_replace($range, "-", $range);
$boyut2=$boyut;
$yeni_boyut=$boyut2-$range;
header("HTTP/1.1 206 Partial Content");
header("Content-Length: $yeni_boyut");
header("Content-Disposition: attachment; filename=".$dosya.";");
header("Content-Range: bytes $range$boyut2/$boyut");
} else {
$size2=$size;
header("Content-Disposition: attachment; filename=".$dosya.";");
header("Content-Range: bytes 0-$boyut2/$boyut");
header("Content-Length: ".$boyut);
}
//open the file
$fp=fopen("$dosya","rb");
//seek to start of missing part
fseek($fp,$range);
//start buffered download
while(!feof($fp)){
//reset time limit for big files
set_time_limit(0);
print(fread($fp,1024*8));
flush();
ob_flush();
}
fclose($fp);
?>
Son yolladığınız sorunsuz şekilde oldu.Çok teşekkür ederim.
Peki başka siteden linki bu şekilde kullanabilir miyiz?
There are currently 1 users browsing this thread. (0 members and 1 guests)
Bookmarks