Nasıl bir indirme duraklatmak / devam ettirmek için izin verebilir?

2 Cevap php

Ben bir kullanıcı tam yerini vermeden bir dosya indirmek için izin istediğinizde Normalde, ben sadece onları dosyasını download edelim bu gibi bir şey kullanabilirsiniz:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"" . $filename) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($filename));
readfile("$filename");

Ama modern bir tarayıcı veya diğer yükleme istemcisi kullanıyorsanız ve bunlar indirme duraklatmak ve sürdürmek için çalışırsanız, komut (hala doğrulanmış ya da her neyse varsayarak) bu nedenle kırılma, başından itibaren başlıkları ve dosya içeriğini yollayacağız indirmek ve temelde baştan redownloaded edilecek dosyası gerektiren.

Nasıl Durdurulmuş (ve dolayısıyla, yeniden) indirme telafi benim komut etkinleştirebilirsiniz?

2 Cevap

Kullanımı PHP yerleşik fopen dosyayı açın ve sonra (istek başlığındaki aralığına göre) doğru yere fseek ve daha sonra yerine readfile kullanarak fpassthru kullanarak kısmi dosya dönmek için.

Sen fread için yorum altında php bazı örnek kod bulabilirsiniz

Daha sonra dosyaya doğru yere gidecek olursanız-Range, vb, Range gibi istek başlıklarını okumak gerekir. Normalde bir web sunucusu normal bir dosya sizin için bu yapardı. Bu biraz karmaşık ama burada başlamanıza olabilir bir şey var:

http://forums.asp.net/t/1218116.aspx

http://www.notes411.com/dominosource/tips.nsf/0/480C4E3BE825F69D802571BC007D5AC9!opendocument

İkinci bağlantı için kod kısmında 12 olduğunu