php ile dosya indirme işlemini limitlendirme (turkish tutorial)
English
Hello to everyone my name is eresbos,
- How to create a limit file downloading with php?
Türkçe
Merhaba arkadaşlar ben eresbos.Bugün sizlere php ile dosya indirme işlemlerinde indirme hızı limiti nasıl konulur onu göstereceğim.
- Kodlarımız ;
<?php
$yerel_dosya = "deneme.zip";
$indirilecek_dosya = "indirilendosya.zip";
$indirme_hizi = 30;
if(file_exists($yerel_dosya) && is_file($yerel_dosya)) {
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($yerel_dosya));
header("Content-Disposition: attachment; filename=" .$indirilecek_dosya);
flush();
$dosya = fopen($yerel_dosya, "r");
while(!feof($dosya)) {
print fread($dosya, round($indirme_hizi * 1024) );
flush();
sleep(1);
}
fclose($dosya);
}else {
echo 'Dosya mevcut degil';
}
?>
1- Projemiz için bir tane dosyaya ihtiyacımız var ben 4.36 mb boyutunda deneme.zip olarak oluşturdum ve localhosta attım.Sizde istediğiniz boyutta ve istediğiniz isimde dosya oluşturup localhosta atabilirsiniz.
2- Değişkenlerimizi tanımlayalım;
$yerel_dosya = "deneme.zip"
değişkeni localhostta bulunan dosyamızı tanıtmaya yarıyor.
$indirilecek_dosya = "indirilendosya.zip"
dosyamızın indirme işlemi tamamlandığınca alacağı ismi tanıtmamızı sağlıyor.
$indirme_hizi = 30;
indirme limitimizi belirlememizi sağlıyor.Yani saniyede maksimum 30 kilobyte indirmemizi sağlayacak.
3- Dosya kontrolümüzü yapıyoruz.'Eğer dosyamız varsa ve bu klasör değilse' şeklinde koşulumuzu yazıyoruz.
if(file_exists($yerel_dosya) && is_file($yerel_dosya)) {
4- İndirme işlemini gerçekleştirmek için;
header("Content-Type: application/octet-stream");
burada indirilecek dosyamızın tipini zip olarak belirliyoruz.header("Content-Length: ".filesize($yerel_dosya));
burada indirelecek dosyamızın boyutunu belirliyoruz.header("Content-Disposition: attachment; filename=" .$indirilecek_dosya);
burada indirme işlemimizi başlatmak ve indirirken hangi ismi kullanacağımızı belirlemek için yeni bir header yazıyoruz.
header("Content-Type: application/octet-stream");
header("Content-Length: ".filesize($yerel_dosya));
header("Content-Disposition: attachment; filename=" .$indirilecek_dosya);
5- flush();
tarayıcıya gömme işlemimizi yapıyoruz.
6- $dosya = fopen($yerel_dosya, "r");
dosyamızı açıp parça parça okutma işlemini gerçekleştiriyoruz.
7- while(!feof($dosya)) {
while döngümüzü kuruyoruz, dosyanın sonuna kadar okunup okunmadığını kontrol ediyoruz.
8- print fread($dosya, round($indirme_hizi * 1024) );
dosyamızı okuttuktan sonra 1024 ile çarpıp kilobyte değerini ekrana yazdırıyoruz.
9- Tekrar flush();
methoduyla tarayıcımıza gömüyoruz.
10- sleep(1);
sleep ile 1 saniye bekleme süresi koyuyoruz.
11- fclose($dosya);
burada indirme işlemini tamamladıktan sonra fclose ile açtığımız dosyayı kapatıyoruz.
12- }else {
eğer üçüncü adımda yazdığımız koşul sağlanmıyorsa,
13- echo 'Dosya mevcut degil';
ekrana dosya mevcut değil sonucunu bastırıyoruz.
Github link : https://github.com/php/php-src
Posted on Utopian.io - Rewarding Open Source Contributors
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Hey @eresbos I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x