PHP bir indirme bağlantısını nasıl?

2 Cevap php

SQL kullanarak veritabanı bir dosya yükleyebilirsiniz ama nasıl ben bunun için bir download linki yapabilirsiniz? şey online indirdiğinizde gibi sonra bir mesaj kutusu bir program ile açmak veya kaydetmek istiyorsanız size sorulur gelecektir. ben bu php nasıl yapabilirim? Bana bunun için kodlarını verebilir? Ben hala bir çaylak değilim.

2 Cevap

DB'den bilgi almak ve isim / boyutu / veri değişkenler yerleştirmek için PHP kodu ile birlikte bir sayfa (bu kodu yerleştirebilirsiniz, o sayfaya bağlantı.

<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $name_of_file);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size_of_file);

echo $file_data;
?>

Yukarıda sıralanan başlıkların hepsi kesinlikle gerekli değildir - aslında, sadece Content-Type başlığı düzgün yükleme çalışması için truly gereklidir. Content-Disposition başlığı size uygun bir dosya adı belirtebilirsiniz böylece dahil etmek iyidir; Diğerleri sadece tarayıcı daha iyi indirmek ele ve eğer arzu atlanabilir yardımcı olur.

Bu Kanunun bazı düzenlemeler benim durumumda çalışması yapmak. - MP3'ler için

Lütfen sunucu Sıra - sen o dosyayı filedownload.php arayarak bu arayabilirsiniz.

Gibi bir dosyadan diyoruz - bu örnekte bir WordPress Özel Kimden alanında

<a href="<?php bloginfo('url'); ?>/filedownload.php?download=<?php echo get_post_meta($post->ID, 'mymp3_value', true) ?>">MP3</a>

Yapmak çok basit.

<?php
    $name_of_file = $_GET["download"];

    header('Content-Description: File Transfer');
    // We'll be outputting a MP3
    header('Content-type: application/mp3');
    // It will be called file.mp3
    header('Content-Disposition: attachment; filename=' .$name_of_file);
    header('Content-Length: '.filesize($name_of_file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    // The MP3 source is in somefile.pdf
    //readfile("somefile.mp3");

    readfile_chunked($name_of_file);

    function readfile_chunked($filename) { 
        $chunksize = 1*(1024*1024); // how many bytes per chunk 
        $buffer = ''; 
        $handle = fopen($filename, 'rb');

        if ($handle === false) { 
            return false; 
        } 

        while (!feof($handle)) { 
            $buffer = fread($handle, $chunksize); 
            print $buffer; 
        } 

        return fclose($handle); 
    } 
?>