Cannn6161 1
Cannn6161
onur akbaş 1
onur akbaş
PrimeAC 1
PrimeAC
Mt2Hizmet 1
Mt2Hizmet
romegames 1
romegames
Fethi Polat 1
Fethi Polat
xranzei 1
xranzei
Bvural41 1
Bvural41
kralhakan2009 1
kralhakan2009
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

PHP - Dosyayı İndir

Carissa

Administrator
Telefon Numarası Onaylanmış Üye TC Kimlik Numarası Doğrulanmış Üye Turkmmo Discord Nitro Booster
Admin
VIP Üye
Katılım
2 Mar 2015
Konular
59,189
Mesajlar
88,442
Çözüm
109
Online süresi
4mo 16d
Reaksiyon Skoru
14,281
Altın Konu
2,398
TM Yaşı
11 Yıl 3 Ay 10 Gün
Başarım Puanı
1,051
MmoLira
695,225
DevLira
234
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

Çoğu modern tarayıcı, PHP betiği gibi herhangi bir sunucu tarafı kodu olmadan belirli türdeki dosyaların otomatik olarak indirilmesine izin verir. Örneğin, bir zip dosyası veya bir EXE dosyası.

Bir HTML köprüsü bir ZIP veya EXE dosyasına işaret ediyorsa, tarayıcı bunu indirir ve bir kaydetme iletişim kutusu açar. Ancak, metin dosyaları, resim dosyaları vb. indirilmez ancak tarayıcıda açılır ve bunları yerel dosya sisteminize kaydedebilirsiniz.

readfile() Fonksiyonu

Bu tür dosyaları indirmek için (tarayıcının bunları otomatik olarak açması yerine), PHP'nin yerleşik fonksiyon kütüphanesindeki readfile() fonksiyonunu kullanabiliriz.

readfile(string $filename,
bool $use_include_path = false,
?resource $context = null)
: int|false

Bu fonksiyon bir dosyayı okur ve çıktı tamponuna yazar.

İkinci parametre $use_include_path varsayılan olarak false'tur, dolayısıyla geçerli dizindeki dosya indirilecektir. true olarak ayarlanırsa, php.ini yapılandırmasının include_path ayarına eklenen dizinler indirilecek dosyayı bulmak için aranacaktır.

readfile() fonksiyonu, başarılı bir şekilde tamamlansa bile okunan bayt sayısını veya false değerini döndürür.

Örnek

Aşağıdaki PHP betiği readfile() fonksiyonunun kullanımını göstermektedir.

Bir dosyayı indirmek için, Content-Type yanıt başlığı application/octect-stream olarak ayarlanmalıdır . Bu MIME türü ikili dosyalar için varsayılandır. Tarayıcılar genellikle bunu yürütmez veya hatta yürütülüp yürütülmemesi gerektiğini bile sormaz.

Ayrıca, Content-Disposition başlığını ek olarak ayarlamak "Farklı Kaydet" iletişim kutusunun açılmasını sağlar.

PHP:
<?php
   $filePath = 'welcome.png';

   // Set the Content-Type header to application/octet-stream
   header('Content-Type: application/octet-stream');

   // Set the Content-Disposition header to the filename of the downloaded file
   header('Content-Disposition: attachment; filename="'. basename($filePath).'"');

   // Read the contents of the file and output it to the browser.
   readfile($filePath);
?>

Yukarıdaki betiği "download.php" olarak belge kök klasörüne kaydedin. İndirilecek dosyanın aynı klasörde bulunduğundan emin olun.

Sunucuyu başlatın ve tarayıcıda adresini ziyaret edin. Aşağıdaki gibi bir "Farklı Kaydet" iletişim kutusu göreceksiniz:

php_download_file.jpg

Bir isim seçip dosyayı indirebilirsiniz.

Büyük bir dosya için, onu dosya akışından belirli bir önceden tanımlanmış boyuttaki parçada okuyabilirsiniz. Tarayıcı, önceki örnekte olduğu gibi İçerik-Durumu başlığı "ek" olarak ayarlanmışsa, onu yerel dosya sistemine kaydetmeyi teklif eder.

PHP:
<?php
   $filename = 'welcome.png';

   header('Content-Type: application/octet-stream');
   header('Content-Disposition: attachment; filename="' . basename($filename) . '"');

   $handle = fopen($filename, 'rb');
   $buffer = '';
   $chunkSize = 1024 * 1024;

   ob_start();
   while (!feof($handle)) {
      $buffer = fread($handle, $chunkSize);       
      echo $buffer;
      ob_flush();
      flush();
   }
   fclose($handle);
?>
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst