Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie plików z użyciem javascript, Czy da się lepiej?
gargamel
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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 ...
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
gargamel
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


No faktycznie, działa. Dzięki (IMG:style_emoticons/default/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?
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to na ile możliwe jest wymuszenie takiego pobierania w js?
Nie za bardzo rozumiem o co pytasz (IMG:style_emoticons/default/sad.gif) Może jakiś większy opis?
Go to the top of the page
+Quote Post
gargamel
post
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No teraz kumam (IMG:style_emoticons/default/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.
Go to the top of the page
+Quote Post
gargamel
post
Post #7





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

Ostrzeżenie: (0%)
-----


Czyli na dobrą sprawę cała zabawa w js niepotrzebna.. Ok, dzięki raz jeszcze. (IMG:style_emoticons/default/smile.gif)

Pzdr.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 16:28