Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie plików z użyciem javascript
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
gargamel
Potrzebuję zrobić pobierarkę plików, która nie będzie przeładowywała strony. Na forum to pytanie już się pojawiało, ale bez konkretnej odpowiedzi. W chwili obecnej mam to rozwiązane następująco:
  1. <!DOCTYPE HTML>
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=utf-8">
  4. <script src="http://code.jquery.com/jquery-1.6.4.min.js" type="text/javascript"></script>
  5. <script type="text/javascript">
  6. $(document).ready(function(){
  7. $("button").click(function(){
  8. $("iframe").attr("src","PDF_Document.php");
  9. });
  10. });
  11. </script>
  12. </head>
  13. <body>
  14. <button>Pobierz</button>
  15. <iframe style="display:none;"></iframe>
  16. </body>
  17. </html>


PDF_Document.php jest dynamicznie generowanym dokumentem, z nagłówkiem 'Content-Type: application/force-download', więc gdy pojawi się w ramce, automatycznie wymusza pobieranie.
Dzała, ale moje pytanie brzmi: czy da się to zrobić jakoś lepiej? Bez iframe-a na przykład ...
nospor
Wystarczy, że zrobisz normalny link, który będzie kierował na PDF_Document.php. Jeśli tylko ten skrypt zwraca skrypt, to strona się nie przeładuje i plik zostanie pobrany
gargamel
No faktycznie, działa. Dzięki smile.gif
To jeszcze tylko pytanie.. Czy jeśli mam w taki właśnie sposób pobrać plik, niech to będzie dokument .pdf, ale na którego nagłówki nie mam wpływu, to na ile możliwe jest wymuszenie takiego pobierania w js?
nospor
Cytat
to na ile możliwe jest wymuszenie takiego pobierania w js?
Nie za bardzo rozumiem o co pytasz sad.gif Może jakiś większy opis?
gargamel
Jasne.

Plik PDF_Document.php jest plikiem, za pomocą którego generowany jest dokument .pdf. Używam klasy FPDF, która daje możliwość podpięcia nagłówka 'Content-Type: application/force-download' dzięki czemu po otworzeniu pliku PDF_Document.php w przeglądarce, automatycznie rozpoczyna się pobieranie. - Tu wszystko działa jak trzeba.

Ale co jeśli chcę pobrać plik: przykładowy_plik.pdf, który nie jest generowany przeze mnie na poziomie php, tylko jest najzwyklejszym plikiem .pdf znajdującym się na serwerze ( w takim przypadku nie mogę wpłynąć na wysyłane nagłówki ) i jeśli przeglądarka odwoła się do niego, otworzy się on w niej - nie będzie się pobierać.

Zastanawiam się czy wykorzystując js, da się w tym przypadku wymusić pobieranie takiego pliku.

Mam nadzieję że teraz nie zamieszałem za mocno smile.gif
nospor
No teraz kumam smile.gif

zwyklego pdf też możesz przepuszczać przez php i generować odpowiedni nagłówki. Odpowiedni wpis w .htaccess będzie kierował odwołania do .pdf na właściwy skrypt php.
gargamel
Czyli na dobrą sprawę cała zabawa w js niepotrzebna.. Ok, dzięki raz jeszcze. smile.gif

Pzdr.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.