PHP'de Dosya Nasıl İndirilir

How Download File Php



Genellikle, uzantıları olan bir dosyayı indirmek için PHP betiği gerekmez. exe ve fermuar . Bu tür bir dosyanın dosya konumu, href bağlantı elemanının özniteliği, ardından kullanıcı indirme bağlantısını tıkladığında dosya otomatik olarak indirilir. gibi bazı dosyalar resim Dosyalar, PDF Dosyalar, Metin Dosyalar, CSV dosyalar vb. otomatik olarak indirilmez ve bunun yerine kullanıcı indirme bağlantısını tıkladığında tarayıcıda açılır. Bu dosyalar PHP kullanılarak zorla indirilebilir. okuma dosyası() otomatik olarak yüklenmeyen işlev. Bu eğitim, PHP betiğini kullanarak herhangi bir dosyayı zorla nasıl indireceğinizi gösterir.

İndirme Bağlantılarını Kontrol Edin

Daha önce de belirtilmişti fermuar ve exe dosyalar PHP komut dosyası kullanmadan otomatik olarak indirilir. İlk olarak, aşağıdaki kodla bir HTML dosyası oluşturun. Burada, dört dosya tipini indirmek için dört bağlantı elemanı tanımlanmıştır. Bu dosya türleri METİN, ZIP, PDF ve JPG dosyalarını içerir.







İndir.html



< html >
< kafa >
< Başlık >Dosyaları indir</ Başlık >
</ kafa >
< vücut >
< P >< ile href='abc.txt'>METİN dosyasını indirin</ ile ></ P >
< P >< ile href='ufuk.zip'>ZIP dosyasını indirin</ ile ></ P >
< P >< ile href='ders.pdf'>PDF dosyasını indirin</ ile ></ P >
< P >< ile href='gül.jpg'>JPG dosyasını indirin</ ile ></ P >
</ vücut >
</ html >

Çıktı
Zip dosyası bağlantısına tıkladıktan sonra dosyayı indirmek için aşağıdaki iletişim kutusu görünecektir. Kullanıcı daha sonra dosyayı indirebilir veya dosyayı arşiv yöneticisinde açabilir.




Resim dosyasına tıklarsanız, aşağıdaki çıktıda gösterildiği gibi resim tarayıcıda otomatik olarak açılacaktır. Görüntü dosyasının bir kopyasını yerel sürücüde oluşturmak için dosyayı kaydetmelisiniz. Aynı şekilde PDF ve METİN dosya linklerine tıkladığınızda dosya indirmeden dosyanın içeriği tarayıcıda açılacaktır. Bu sorunun çözümü, yerleşik PHP'yi kullanarak dosyayı zorla indirmektir. okuma dosyası() işlev.





Readfile() İşlevini Kullanarak Dosyayı İndirin

NS okuma dosyası() işlevi PHP betiğinde, geçerli konumdaki herhangi bir dosyayı veya dosya yolunu içeren dosyayı zorla indirmek için kullanılır. Bu işlevin sözdizimi aşağıda verilmiştir.



Sözdizimi
int readfile ( string $dosyaadı [, bool $use_include_path = false [, kaynak $bağlam ]] )

Bu fonksiyon üç argüman alabilir. İlk argüman zorunludur ve diğer iki argüman isteğe bağlıdır. İlk argüman, $dosya adı , dosya adını veya dosya adını indirilecek yol ile birlikte saklar. İkinci parametrenin varsayılan değeri, $use_include_path , yanlıştır ve yolu içeren dosya adı ilk bağımsız değişkende kullanılıyorsa true olarak ayarlanır. Üçüncü argüman, $bağlam , bağlam akışı kaynağını belirtmek için kullanılır. Bu işlev, ilk bağımsız değişkende belirtilen dosyadan okunan bayt sayısını döndürür. Bu işlevin kullanımları aşağıdaki iki örnekte gösterilmiştir.

Örnek 1: Dosya Adıyla Dosyayı İndirin

Bu örnekte, dosya adının URL'nin parametresi olarak geçirileceği aşağıdaki kodla bir HTML dosyası oluşturacağız. yol , ve bu parametrenin değeri adlı PHP dosyasına iletilecektir. indir.php .

download2.html

< html >
< kafa >
< Başlık >Dosyaları İndir</ Başlık >
</ kafa >
< vücut >
< P >< ile href='download.php?path=abc.txt'>İndirMETİNdosya</ ile ></ P >
< P >< ile href='download.php?path=horizon.zip'>ZIP dosyasını indirin</ ile ></ P >
< P >< ile href='download.php?path=lecture.pdf'>PDF dosyasını indirin</ ile ></ P >
< P >< ile href='download.php?path=rose.jpg'>JPG dosyasını indirin</ ile ></ P >
</ vücut >
</ html >

Dosyayı zorla indirmek için PHP dosyasını aşağıdaki kodla oluşturacağız. Burada, gitmiş) olup olmadığını kontrol etmek için kullanılır. $_GET['yol'] tanımlanmış. Değişken tanımlanırsa, dosya var() dosyanın sunucuda olup olmadığını kontrol etmek için kullanılır. Daha sonra, başlık() işlevi, kullanmadan önce gerekli başlık bilgilerini ayarlamak için kullanılır. okuma dosyası() işlev. NS temel ad() işlev, dosya adını almak için kullanılır ve Dosya boyutu() işlevi, dosyayı indirmek için açılan iletişim kutusunda gösterilecek olan dosyanın boyutunu bayt cinsinden okumak için kullanılır. NS floş() işlevi, çıktı arabelleğini temizlemek için kullanılır. NS okuma dosyası() işlev burada yalnızca dosya adıyla kullanılır.

indir.php



Eğer( gitmiş ($_GET['yol']))
{
//dosya adını oku
$dosya adı = $_GET['yol'];
//Dosyanın var olup olmadığını kontrol edin
Eğer( dosya var ($dosya adı)) {

// Başlık bilgisini tanımla
başlık ('İçerik-Açıklama: Dosya Aktarımı');
başlık ('Content-Type: application/octet-stream');
başlık ('Önbellek Kontrolü: önbellek yok, yeniden doğrulanmalıdır');
başlık ('Son kullanma tarihi: 0');
başlık ('İçerik-Yerleşim: ek; dosya adı=''. temel ad ($dosya adı).''');
başlık ('İçerik Uzunluğu: ' . Dosya boyutu ($dosya adı));
başlık ('Pragma: kamu');

//Sistem çıktı arabelleğini temizle
floş ();

//Dosyanın boyutunu oku
okuma dosyası ($dosya adı);

//Komut dosyasından sonlandır
NS ();
}
Başka{
dışarı attı 'Dosya bulunmuyor.';
}
}
Başka
dışarı attı 'Dosya adı tanımlı değil.'
?>

Çıktı
Görüntü dosyasının indirme bağlantısına tıkladıktan sonra aşağıdaki çıktı görünecektir. dosya boyutu gül.jpg resim 27,2 KB , iletişim kutusunda gösterildiği gibi. Seçerek dosyayı indirebilirsiniz. Dosyayı kaydet radyo düğmesine basın ve Tamam buton.

Örnek 2: Dosya Yoluyla Dosyayı İndirin

Dosya verilen dosya konumunda bulunuyorsa, URL'de dosya yolunun belirtilmesi gerekecektir. Bu örnekte, dosya adını dosya yolu ile iletecek olan aşağıdaki kodla bir HTML dosyası oluşturacağız:

download3.html

< html >
< kafa >
< Başlık >Dosyaları indir</ Başlık >
</ kafa >
< vücut >
< P >< ile href='download.php?path=downloads/lecture.pdf'>PDF dosyasını indirin</ ile ></ P >
< P >< ile href='download2.php?path=downloads/rose.jpg'>JPG dosyasını indirin</ ile ></ P >
</ vücut >
</ html >

Dosya yolundan bir dosya indirmek için aşağıdaki kodla bir PHP dosyası oluşturacağız. Önceki örnekteki PHP kodu, dosyayı verilen yoldan indirmek için biraz değiştirilecektir. NS clearstatecache() işlevi, daha önce depolanan önbelleği temizlemek için kullanılır. İki argüman kullanılır okuma dosyası() işlev.

download2.php


Eğer( gitmiş ($_GET['yol']))
{
// url'yi oku
$url = $_GET['yol'];

//Önbelleği temizle
clearstatcache ();

//Dosya yolunun var olup olmadığını kontrol edin
Eğer( dosya var ($url)) {

// Başlık bilgisini tanımla
başlık ('İçerik-Açıklama: Dosya Aktarımı');
başlık ('Content-Type: application/octet-stream');
başlık ('İçerik-Yerleşim: ek; dosya adı=''. temel ad ($url).''');
başlık ('İçerik Uzunluğu: ' . Dosya boyutu ($url));
başlık ('Pragma: kamu');

//Sistem çıktı arabelleğini temizle
floş ();

//Dosyanın boyutunu oku
okuma dosyası ($url,NS);

//Komut dosyasından sonlandır
NS ();
}
Başka{
dışarı attı 'Dosya yolu mevcut değil.';
}
}
dışarı attı 'Dosya yolu tanımlı değil.'

?>

Çıktı
PDF dosyasının indirme linkine tıklandıktan sonra aşağıdaki çıktı karşınıza çıkacaktır.

Video öğretici

Çözüm

Bu makale, okuyucuların komut dosyalarına indirme özelliğini eklemelerine yardımcı olmak için PHP komut dosyasını kullanarak herhangi bir dosyayı zorla indirmenin basit bir yolunu sağladı.