Temat: Wymuszenie downloadu pliku ze strony klienta
Kornel L.:
Zauważyłem w tym wątku pare pomysłów, które wydają mi się mitami.
1. Nie da się wymusić pobierania binarnych plików za pomocą JavaScript (hack z execCommand jest interesujący, ale to jest tylko dla HTMLowego designMode i może wymusić konwersję do HTML!)
HTMLowego? Hmmm, to rozumie, że przetestowane jest?
Bo u mnie IE zapisał wszystkie pliki, które tesotwałem. Od JPEG przez bitmapy, pngi, mp3, avi itd itp. Nie zadziała oczywiście w przypadku, dla których serwer ma przypisane własne handlery.
Sporym minusem jest to, że działa tylko pod IE.
2. Nie mogę już patrzeć na bezkrytycznie kopiowany "PHPowy" zestaw nagłówków do wymuszania pobierania. Większość z tych nagłówków jest kompletną bzdurą i niektóre nawet przeczą sobie nawzajem.
Po pierwsze nie kopiowane tylko napisane metodą prób i błędów.
A niby które sobie przeczą?
Wg RFC 2616 jest tylko jeden sposób na wymuszenie pobierania i na dodatek jest on zupełnie opcjonalny.
Content-Disposition:attachment
Nie potrzeba dokładać nazwy pliku, nie potrzeba miliona innych rzeczy. Nagłówek musi być wysłany razem z plikiem (nie w żadnym meta tagu). Najlepiej to zrobić za pomocą serwera (np. mod_headers Apache),
Racja, szczególnie że plik nie jest na naszym serwerze i nie mamy wpływu na wysyłane nagłówki...
Przeczytaj dokładnie jaki jest problem.
Gdyby to nie był webservice tylko pliki trzymane na "naszym" serwerze to pytanie nigdy by się nie pojawiło, bo wymuszanie sciąganie plików z własnego serwer to nie problem.
bo PHP jest strasznie marny do wysyłania
plików (psuje wznawianie, nawet minimalny skrypt zużywa wielokrotnie więcej RAM).
Akurat wznawiane sciąganie plików w PHP jest trywialne i nie wymaga podstawowej wiedzy z PHP.
To, że Ty nie potrafisz tego zorbić nie znaczy że jest to trudne czy niemożliwe :)