Nasıl otomatik PHP'de bir Start Download için?

oy
43

Ne kodu bir bağlantı ziyaret edildiğinde otomatik tarayıcı yerel makineye bir dosya indirmek için PHP eklemek gerekir?

Özellikle yazılımın adını tıklayın kez diske bir dosyayı kaydetmek için kullanıcı istemi indirme siteleri benzer işlevsellik düşünüyorum?

Oluştur 02/09/2008 saat 23:02
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
37

İşte pdf geri gönderme bir örnektir.

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);

@Swish ben farklı bir şey (IE ve Firefox test) yapılacak uygulama / zorla indirme içerik türünü bulamadık. Gerçek MIME türü geri göndermiyor için bir neden var mı?

Ayrıca PHP kılavuzunda Hayley Watson yayınladı:

yerine işlenmiş olma, indirilebilir ve kaydedilebilir bir dosya zorlamak isterseniz, "application / kuvvet ve indir" diye bir MIME türü olduğunu unutmayın. Bölümler: Bu durumda kullanılacak doğru türü "application / octet-stream" ve sadece müşteriler tanınmayan MIME türlerini göz ardı edip "application / octet-stream" yerine (referans kullanmak gerekiyordu gerçeğine dayanarak olduğunu başka bir şey kullanıyor 4.1.4 ve 4.5.1 RFC 2046 arasında).

Ayrıca uygun Iana Hiçbir kayıtlı uygulama / zorla indirme türü yoktur.

Cevap 02/09/2008 saat 23:05
kaynak kullanıcı

oy
51

Dosyayı çıkışı önce aşağıdaki başlıkları Gönder:

header("Content-Disposition: attachment; filename=\"" . basename($File) . "\"");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize($File));
header("Connection: close");

@grom : 'Uygulama / sekizli-akışında MIME türü hakkında ilginç. Ben, bunun farkında değildi her zaman sadece 'application / kuvvet-indir' kullandık :)

Cevap 02/09/2008 saat 23:07
kaynak kullanıcı

oy
8

Temiz bir örnek.

<?php
    header('Content-Type: application/download');
    header('Content-Disposition: attachment; filename="example.txt"');
    header("Content-Length: " . filesize("example.txt"));

    $fp = fopen("example.txt", "r");
    fpassthru($fp);
    fclose($fp);
?>
Cevap 01/12/2011 saat 20:45
kaynak kullanıcı

oy
0

kodum txt, doc, docx, pdf, ppt, pptx, jpg, png, zip uzantıları için çalışır ve ben onun daha iyi açıkça fiili MIME türlerini kullanmak düşünüyorum.

$file_name = "a.txt";

// extracting the extension:
$ext = substr($file_name, strpos($file_name,'.')+1);

header('Content-disposition: attachment; filename='.$file_name);

if(strtolower($ext) == "txt")
{
    header('Content-type: text/plain'); // works for txt only
}
else
{
    header('Content-type: application/'.$ext); // works for all extensions except txt
}
readfile($decrypted_file_path);
Cevap 04/04/2012 saat 14:17
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more