Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Jak zwrócić plik (download) odebrany ajaxem?
koszykarze
post
Post #1





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 10.10.2015
Skąd: Warszawa

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


kontroler (symfony) zwraca mi plik:
  1. return $this->file($filename, $fileTitle);

i dopóki ten kontroler wywołuję przez link:
  1. <a href="https://foo.pl/nk/dowloaddocument/#=doc_id#">

to po nacisnięciu linka w odpowiedzi przeglądarka zapisuje plik.

Ale chciałbym to zrobić ajaxem (by przesłać do kontrolera dodatkowe informacje w POST). Ale jak zwrócić plik po otrzymaniu odpowiedzi w ajax.success?
  1. $.ajax({
  2. url: URL + 'foo/' + data.doc_id,
  3. type: 'POST',
  4. dataType: 'json',
  5. data: {
  6. 'user': user,
  7. 'key': '13432342314214',
  8. },
  9. success: function (response) {
  10. return response
  11. //window.location = URL + 'foo/' + data.doc_id; //ta metoda (stackoverflow) częściowo działa ale wysyłane są 2 żądania i nie zapisuje pliku, ale w zakładce chrome preview widzę plik
  12. }
  13. }


Ten post edytował koszykarze 30.07.2018, 22:35:47
Go to the top of the page
+Quote Post
gorden
post
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


Jeśli chodzi o rozpoczęcie pobierania, to nie da się. Zrób to za pomocą formularzy.
Jeśli masz wiele różnych plików do pobrania, to podmieniaj action na:
Kod
URL + 'foo/' + data.doc_id

i rób submit.

W odpowiedzi daj treść pliku, razem z odpowiednimi nagłówkami, by rozpocząć pobieranie i nie przeładować strony.
Go to the top of the page
+Quote Post
koszykarze
post
Post #3





Grupa: Zarejestrowani
Postów: 119
Pomógł: 0
Dołączył: 10.10.2015
Skąd: Warszawa

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


Cytat(gorden @ 30.07.2018, 13:51:39 ) *
W odpowiedzi daj treść pliku, razem z odpowiednimi nagłówkami, by rozpocząć pobieranie i nie przeładować strony.

możesz podać przykład?
Go to the top of the page
+Quote Post
gorden
post
Post #4





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


  1. header('Content-Type: ' . $typ_mime_pliku);
  2. header('Content-Disposition: attachment; filename="' . $nazwa_pliku . '"');
  3. header('Content-Length: ' . $rozmiar_pliku_w_bajtach); //niewymagane, ale wtedy użytkownik nie zobaczy rozmiaru
  4.  
  5. echo $zawartosc_pliku;


Ten post edytował gorden 30.07.2018, 18:47:18
Go to the top of the page
+Quote Post
sabat24
post
Post #5





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Od frontu ja to robiłem zawsze na dynamicznej ramce pływającej zamiast formularzy, ale generalnie na jedno prawie wychodzi.
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 Aktualny czas: 19.08.2025 - 19:12