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 25.10.2011, 10:34:08
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 25.10.2011, 10:36:11
Post #2





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gargamel
post 25.10.2011, 10:46:52
Post #3





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

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


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?
Go to the top of the page
+Quote Post
nospor
post 25.10.2011, 10:49:13
Post #4





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gargamel
post 25.10.2011, 11:02:57
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 smile.gif
Go to the top of the page
+Quote Post
nospor
post 25.10.2011, 11:13:51
Post #6





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gargamel
post 25.10.2011, 11:21:41
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. smile.gif

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

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.04.2025 - 23:39