Bunu indirirken dosyaları yeniden adlandırma

2 Cevap

Ben kullanıcı bunu indirince dosyayı yeniden adlandırmak istiyorum.

Şu anda, ben içerik eğilim ve içerik-uzunluk başlıkları yolluyorum ve sonra fpassthru PHP fonksiyonu ile kullanıcıya dosya gönderebilirsiniz.

Ancak bu yöntem ile 3 sorunlar vardır:

  1. I (3-4Gb üzeri) Bu yöntem büyük dosyaları yolluyorum, o benim PHP komut dosyası çok fazla zaman çalışır ve zaman aşımı tarafından öldürülmüş olabilir.
  2. Kullanıcı indir iptal ederse, PHP komut dosyasını okuyun ve göndermeye devam
  3. Kullanıcı indir duraklar, o daha sonra devam edemiyor.

Download dosyaları yeniden adlandırmak için herhangi bir güzel yolu var mı?

2 Cevap

<?php
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?> 
  1. Onun asıl adı "original.pdf" iken dosya "downloaded.pdf" olarak indirmek için sunulacak.

Sahte kod

while(1) {
    Echo "..."; //<-- send this to the client
    if (connection_status()!=0){
    die;
    }
}
  1. Bir kullanıcı kullanarak tarayıcıyı iptal eğer PHP komut durdurabilirsiniz connection_status()

  2. HTTP kapalı bir bağlantısı yeniden olamaz. FTP yapabilirsiniz!

Soru sorulmuştur yana, biraz zaman geçti ve html5 bize bu farklı bir yaklaşım verdi:

<a href="someWeiredFileName.rar" download="coolFilename.rar">Download</a>

attribute download (learn more) filename müşterilerine bilgisayardaki dosyayı saklamak için varsayılan (hâlâ mümkün olacak tanımlar bunu değiştirmek!).

Note: this won't affect anything on your server.