Ben (http://pr1pad.kissyour.net) yoktu sitede çoğunlukla fermuarlar ve mp3 indirmek zorunda indir istimal - veritabanı, google analytics indirmeleri izlemek ve gerçek indirme yolunu gizlemek için:
Bu var:
extending CI model
... - bunch of code
function _fullread ($sd, $len) {
$ret = '';
$read = 0;
while ($read < $len && ($buf = fread($sd, $len - $read))) {
$read += strlen($buf);
$ret .= $buf;
}
return $ret;
}
function download(){
/* DOWNLOAD ITSELF */
ini_set('memory_limit', '160M');
apache_setenv('no-gzip', '1');
ob_end_flush();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public",FALSE);
header("Content-Description: File Transfer");
header("Content-type: application/octet-stream");
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
header('Content-Type: application/force-download'); //IE HEADER
header("Accept-Ranges: bytes");
header("Content-Disposition: attachment; filename=\"" . basename("dir-with- files/".$filename) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize("dir-with-files/".$filename));
// Send file for download
if ($stream = fopen("dir-with-files/$filename", 'rb')){
while(!feof($stream) && connection_status() == 0){
//reset time limit for big files
set_time_limit(0);
print($this->_fullread($stream,1024*16));
flush();
}
fclose($stream);
}
}
It's on LAMP with CI 1.7.2 - It's my own method put together from various how-tos all over the internet, because during developement, these problems came up:
- server limit. ini_set
haven't helped, so I used buffered _fullread
instead normal fread
, which was used insted of @readonly
- ob_end_flush(), because site is did in CI1.7.2 and i needed to clean buffer
Şimdi ... Bu işe yaramazsa. Ben kodu temizlik yaparken ben onu temizlemek için çalıştı ve bir şey oldu, ben ne ve any önceki sürümü bilmiyorum - - Bu o beklenen boyutu / indirme süresini gösteren durdu yaptım, o (herhangi ayarlarında değişiklik yok) çalıştı değil - edit: işe yaramayan = tarayıcı penceresinin içine her şeyi verir.
Yani ben burada bakacağım, o vida, dedi.
Yani, temelde benim çıkış modeli koyabilirsiniz ve yapacak olan komut veya fonksiyon arayın:
- Call force-download (in Chrome start download, in IE,FF,Safari open the modal open/save/cancel)
- Dosyanın Göster boyutu ve tahmini dl zaman (bu tarayıcıda kalmış, biliyorum, ama önce, tarayıcı dosya boyutu bilmeniz gerekir
- İŞ (test ve teyit!) IE6, 7,8, FF3, Opera, Chrome ve içinde ve PC + Mac safari (Linux. .. ben gerçekten umurumda değil) - bu başlık kısmı için var
- olması da önemlidir böylece sunucu üzerinde, ben de ben eklemek olamaz 56MB bellek sınırı, gibi bir şey var
Şimdiden teşekkür ederim.
. Edit: Şimdi daha Htaccess ile indir zorlamaya çalıştı beri, her zamankinden daha önce / vidalı hissediyorum - çalışırken, bir kaç büyük / küçük vardı (seninkini almak) sorunları
- tam yolunu (küçük benim için) gösterdi
- ve bir saniye içinde İndir (büyük benim için) - bu tam indir ("bağlantı" olarak gösteren) tamamladı ve ardından sadece indiriyor gösterecek kadar bekler
Ben. Htaccess silindi rağmen indir (ilk önbelleğe indirirken sadece sanki) tamamlandı ve sadece connected
bulunuyor almak ve açık / iletişim kaydetmek göstermek kadar, şimdi, hala bekler.