Tarayıcıya diskte php çıktı dosyası

5 Cevap

i want to serve an existing file to the browser in php. i've seen examples about imagejpeg but that function seems to save a file to disk and you have to create a right sized image object first... (or i just don't understand it :))

asp.net i bir bayt dizisi ve çağrı context.Response.BinaryWrite (ByteArray) dosyayı okuyarak bunu, bu yüzden php benzer bir şey arıyorum.

Michel

5 Cevap

Tam olarak neye ihtiyacınız yapması gerektiğini fpassthru() vardır. Aşağıdaki örnek hakkında okumak için manuel girişine bakın:

<?php

// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>

Bkz here PHP'nin dosya sistemi fonksiyonları için.

Eğer indirmek için sunmak istiyoruz bir ikili dosya varsa, muhtemelen de iletişim kutusu açılır "Farklı Kaydet .." yani doğru başlıklarını göndermek istiyorum. Göndermek için ne başlıkları iyi bir örneğin, this question 1. cevaba bakınız.

This should get you started: http://de.php.net/manual/en/function.readfile.php

Düzenleme: web sunucusu kullanarak bunu destekliyorsa

header('X-Sendfile: ' . $filename);

dosya adı, yerel bir yol gibi içerdiği durumlarda

/var/www/www.example.org/downloads/example.zip

readfile daha hızlıdır ().

(Başlık kullanarak olağan güvenlik konuları () uygulanır)

Ben (readfile kullanın) (http://www.php.net/readfile) ...

Ama emin başlığı ile sağ "Content-Type" (set yapmak zorunda) yani tarayıcı dosya ile ne yapacağını bilir.

Ayrıca yerine (gibi PDF'ler için) göstermek için bir plug-in kullanmaya çalışmakla dosyasını indirmek için tarayıcıyı zorlayabilir, ben her zaman bu biraz "hacky" bakmak bulundu, ama yukarıdaki linkte açıklanmıştır.

Benim web sitesi ve web siteleri hem de ben çok uzun zaman önce bulunmuş bir PHP komut dosyası kullanan istemciler için oluşturun.

Burada bulunabilir: http://www.zubrag.com/scripts/download.php

Bana sıcak bağlantı (varsayılan) izin vermiyor ek olarak (varsayılan olarak yapar) dosya sistemi yapısını allak bullak sağlamak için bunun biraz değiştirilmiş bir sürümünü kullanın ve böyle yönlendirme, IP (varsayılan) gibi bazı ek özellikleri izleme, ekledi , ve ben gerekebilir diğer veriler şey gelmelidir.

Umarım bu yardımcı olur.

Ben bunu kullanın

  if (file_exists($file)) {


        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename='.basename($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: ' . filesize($file));

        ob_clean();
        flush();
        readfile($file);
        exit;

    }