![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Cześć.
Nie mogę sobie poradzić z stworzeniem pliku tymczasowego a potem umożliwić użytkownikowi jego pobranie. Chodzi mi o coś takiego ,że gdy user kliknie w link to mu się dynamicznie utworzony pliki pobierze. Dodam jeszcze bo pewnie ma to znaczenie że wszystko na stronie leci ajax'em, więc po kliknięciu w link leci post coś zwróci a użytkownikowi pojawi się okienko do pobrania pliku (takie jak przy normalnym pobieraniu) |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Temat jest ciekawy. Jeżeli wysyłasz ajax request, który tworzy plik po czym zwraca do niego link - wyświetlając go gdzieś na stronie to pojawi się też kwestia "kiedy usunąc ten plik".
Moja propozycja: Zmień rozumowanie - twoja koncepcja zawiera dwa punkty: 1. ajax - generacja pliku i utworzenie do niego linku 2. link - pobranie pliku Co z kasowaniem? Moja koncepcja 2 kroki: 1. ajax - sprawdzanie wszystkiego dotyczącego tego czy user może pobrać żądany plik, następnie zapis w sesji że może i który, utworzenie linku. 2. link - user klika, następuje generacja pliku w locie, przesłanie go użytkownikowi z PHP (brak potrzeby usuwania) ![]() -------------------- If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;) Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Nie możesz po prostu wysłać odpowiednich nagłówków (wymuszających "normalne" pobranie) oraz wyświetlić z poziomu PHP tych danych?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Moja koncepcja 2 kroki: 1. ajax - sprawdzanie wszystkiego dotyczącego tego czy user może pobrać żądany plik, następnie zapis w sesji że może i który, utworzenie linku. 2. link - user klika, następuje generacja pliku w locie, przesłanie go użytkownikowi z PHP (brak potrzeby usuwania) sprawdzanie czy user może pobrać mam bo jak nie będzie miał uprawnień do danego modułu to klasa go nie puści dalej. Nie wiem jak utworzyć ten plik w locie tak żeby się nie zapisał na dysku. i nie wiem do końca jak zrobić z tym linkiem mam przycisk export xml i po kliknięciu na niege. leci post do handlera tam jest ladowana odpowiednia klasa i uruchamiana funkcja i z tej funkcji chciałbym wypluc plik i uruchumoic jego pobranie Ten post edytował zaajcu 19.12.2011, 10:32:13 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Ale z czego tworzysz ten plik ? To jest jakies generowane archiwum czy tez z bazy danych ? Poprostu zwracasz link do pliku który wyrzuca odpowiedni nagłówek i treść pliku. Możesz to zrobić nawet przez token jeżeli generowania tego pliku nie da się zautomatyzować i zapisywac w bazie dane opisujące ten token. Generujesz token i podpinasz pod niego odpowiednią zawartośc pliku, potem dajesz mu linke do np. pobierz.php?TOKEN_ID=123456789, tam skypt zwraca odpowiednie naglówki i treść. Po wszystkim usuwasz ten token z bazy (Jeżeli mają to być linki jednorazowe)
Ten post edytował Uriziel01 19.12.2011, 10:45:54 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 872 Pomógł: 94 Dołączył: 31.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Pobieranie plikow przez uzytkownikow to tak na prawde nie pobieranie plikow. Wykorzystuje sie do tego konkretne naglowki HTTP, dzieki ktorym przegladarka mysli ze otrzymala plik i rozpoczyna jego pobieranie. Zeby wyslac cokolwiec jako plik wcale nie musisz tworzyc tymczasowych plikow, wrecz bylo by to porazka.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Dane do pliku są pobierane z bazy danych. Generowanie będzie w pełni automatyczne zależne od jednej zmiennej.
Chciałem to zrobić bez otwierania nowego okna. ale z tego co mówicie można by faktycznie zrobić normalny link do pliku download.php gdzie zostanie stworzony ten plik i jakieś tam nagłówki dodane. ![]() Teraz tylko pytanie jakie nagłówki i jak stworzyć zawartość pliku? Wystarczy normalne echo i zmiana nagłówka? i jak zmienić nazwę pliku? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 307 Pomógł: 37 Dołączył: 9.11.2010 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Przykład z jakiejś strony z google
![]() Musisz tylko podpiąć swoją zawartość do $filecontent i nazwe pliku do $downloadfile; No i oczywiście 'Content-Type' musi odpowiadac faktycznemu plikowi. (Od razu mówię że nie wiem czy ten skrypt zawiera jakies błedy, to nie mój kod)
Ten post edytował Uriziel01 19.12.2011, 10:54:09 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 206 Pomógł: 3 Dołączył: 18.08.2011 Skąd: Chrzanów Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za chwile się za to wezmę
![]() Przykład z jakiejś strony z google ![]() Musisz tylko podpiąć swoją zawartość do $filecontent i nazwe pliku do $downloadfile; No i oczywiście 'Content-Type' musi odpowiadac faktycznemu plikowi. (Od razu mówię że nie wiem czy ten skrypt zawiera jakies błedy, to nie mój kod)
wszystko prawie fajnie tylko potrzebuje zeby do pliku mi zapisało taką treść:
a z tym jest mały problem bo nie wyświetle tego na stronie ze względu na <> jak je pozamieniam na < > to niestety ale te znaczniki tam lądują :/ jak można to obejść zrobiłem tak:
utworzyłem sobie jeden plik który będzie zawsze pobierany i zrobiłem hedera na niego ale niestety zamiast mi się on pobrać to mi się on wyświetla w przeglądarce :/ nie wiem jaki nagłówek dorzucić żeby się pobrał chyba że macie inny pomysł na to. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 532 Pomógł: 24 Dołączył: 15.04.2011 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wiem, to musisz dać przeglądarce do zrozumienia, że to plik pobieralny header("Content-Type: application/force-download");, i nie dawać żadnego jego typu MIME. W tedy przeglądarka uzna, że nie otworzy tego pliku, więc da userowi mozliwość pobrania pliku. Ja u siebie mam cos takiego i działa, bez względu na to jaki to plik:
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 30.06.2014 Ostrzeżenie: (0%) ![]() ![]() |
Odkopię troszkę temat.
Pomoże ktoś jak wysłać dwa pliki? |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie da się wysłać 2 plików.
Musisz spakować na serwerze i wysłać spakowany. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:00 |