konto usunięte

Temat: duży problem!!!!

Mam następujący problem:

Mam jakąś zmienną tekstową i chcę jej zawartość zapisać do pliku na komputerze lokalnym.
Nigdzie nie mogę znaleźć sposobu jak z poziomu javascript otworzyć okno "Zapisz jako".

Próbowałem już takie coś:
javascript:document.execCommand('SaveAs','1','nazwapliku.txt'), ale
firefox wywala błędy.
Łukasz K.

Łukasz K. IT Project
Manager/Team Leader

Temat: duży problem!!!!

Napisałeś na grupie PHP to podpowiem w nawiązaniu do php.

Musisz wysłać odpowiedni nagłówek header do przeglądarki z zawartością pliku, szczegóły wraz z przykładami w komentarzach znajdziesz na:
http://pl2.php.net/
http://pl2.php.net/manual/pl/function.header.php

Pozdrawiam,
Łukasz

konto usunięte

Temat: duży problem!!!!

Michał Wojtkowiak:
ale firefox wywala błędy.

I będzie je wywalał, ponieważ execCommand jest dedykowaną funkcją, napisaną dla IE.
Jedyne co przychodzi mi teraz do głowy, to wystawienie odpowiednich nagłówków w PHP, co spowoduje wymuszenie zapisania, a wyświetlenia.

konto usunięte

Temat: duży problem!!!!

Michał Wojtkowiak:
Mam jakąś zmienną tekstową i chcę jej zawartość zapisać do pliku na komputerze lokalnym.
Nigdzie nie mogę znaleźć sposobu jak z poziomu javascript otworzyć okno "Zapisz jako".

Wprost tego okna uniwersalnie nie otworzysz. Ale możesz wymusić na przeglądarce tak jakby "ściągnięcie tego pliku". Czyli dać odpowiednie nagłówki, co spowoduje, że przeglądarka "wykryje" plik do ściągnięcia. Ale niekoniecznie wyświetli okno "Save as", bo to już zależy od jej ustawień.
Daniel Częstki

Daniel Częstki senior php developer

Temat: duży problem!!!!

a nie mozesz jej zapisac w cookie ?

konto usunięte

Temat: duży problem!!!!

ok ok, wielkie dzięki! już mam rozwiązanie :)

Zapisze plik na serwerze, a następnie wygeneruje do niego linka.
Później odpalę go javascript'em. Na końcu usunę plik i po sprawie.
Mam nadzieję :)

konto usunięte

Temat: duży problem!!!!

Michał Wojtkowiak:
...
Mam nadzieję :)

Nie będziesz wiedział kiedy usunąć (czyli czy już nastąpiło pobranie).

Powyżej podsunęli Tobie dobre rozwiązania (nagłówek) - nie rozumiem dlaczego nie poszedłeś w tym kierunku.

konto usunięte

Temat: duży problem!!!!

Robert B.:
Nie będziesz wiedział kiedy usunąć (czyli czy już nastąpiło pobranie).

Będziesz wiedział: connection handling

edit
Co nie zmienia faktu, że trzeba użyć funkcji header.Maciej W. edytował(a) ten post dnia 29.05.08 o godzinie 22:08
Tomasz Struczyński

Tomasz Struczyński TeamLeader PHP i
analityk

Temat: duży problem!!!!

Michał Wojtkowiak:
ok ok, wielkie dzięki! już mam rozwiązanie :)

Zapisze plik na serwerze, a następnie wygeneruje do niego linka.
Później odpalę go javascript'em. Na końcu usunę plik i po sprawie.
Mam nadzieję :)


No to udało Ci się wykombinować chyba najtrudniejsze rozwiązanie tego problemu. Dochodzą Ci problemy z zapisaniem pliku na serwerze, obsługą (może być wyłączony) javascriptu, wykrywaniem ściągnięcia....

A można prościej...

Z dokumentacji PHP.

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

header('Content-Disposition: attachment; filename="twojanazwa.txt"'); //znaczy załącznik a nie do wyświetlenia

echo $zmienna;
exit;

I tyle...Tomasz Struczyński edytował(a) ten post dnia 29.05.08 o godzinie 23:41
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: duży problem!!!!

Tomasz Struczyński:

Z dokumentacji PHP.

header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");

header('Content-Disposition: attachment; filename="twojanazwa.txt"');

application/octet-stream dobrze dziala dla mozillowatych, IE i Opera w przypadku typu octet-stream biora pod uwage rozszerzenie pliku, i moga mimo wszystko wyswietlic, dlatego zeby wymusic zapis w tych przegladarkach trzeba uzyc application/force-download (z czym z kolei mozillowate maja czasami problemy, bo jest to niestandardowy typ MIME, wiec optymalnie byloby wykrywac przegladarke). No i naglowek Content-Disposition z nazwa pliku dobrze jest dawac przed Content-Type, w przeciwnym razie IE czasami swiruje.
Krzysztof Piwowar

Krzysztof Piwowar UX Consultant &
Owner @ Magnetise -
looking for new
busin...

Temat: duży problem!!!!

Michał Wojtkowiak:
ok ok, wielkie dzięki! już mam rozwiązanie :)

Zapisze plik na serwerze, a następnie wygeneruje do niego linka.
Później odpalę go javascript'em. Na końcu usunę plik i po sprawie.
Mam nadzieję :)

Że tak skomentuje korzystając z mojego zboczenia zawodowego:
a co w przypadku, gdy JS nie działa (zblokowany, walnięty, burzą piaskowa...). Tworzenie rozwiązań bez alternatywnego działania mija się troszkę z celem, poniważ ZAWSZE znajdzie się wyjątek.

konto usunięte

Temat: duży problem!!!!

Da się w JavaScript - zajrzyj na http://tiddlywiki.com i przejrzyj źródła strony...

JavaScript zablokowany - żaden problem. "Ta funkcja wymaga włączonego JavaScript" - zawsze można pokazać taki bloczek. Jak - zajrzyj na http://tiddlywiki.com...

konto usunięte

Temat: duży problem!!!!

Maciej W.:
Będziesz wiedział: connection handling

Chciałbyś zapętlić w oparciu o "connection handling" czy jak ?
Jak to sobie wyobrażasz w przypadku takiego działania ?
Zapisze plik na serwerze, a następnie wygeneruje do niego linka.
Później odpalę go javascript'em. Na końcu usunę plik
Robert B. edytował(a) ten post dnia 30.05.08 o godzinie 20:32
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: duży problem!!!!

Piotr Likus:

JavaScript zablokowany - żaden problem. "Ta funkcja wymaga włączonego JavaScript" - zawsze można pokazać taki bloczek.

I wkur... uzytkownika.
Ja osobiście jak widzę, że prosta funkcjonalnośc, którą spokojnie dałoby sie uzyskać czystym HTML-em i skryptem server-side, "wymaga włączonego javascriptu", to zazwyczaj pieprznę taką stroną w diabły.
Strony, które "wymagają włączonego javascriptu", należy zaliczyć do tej samej kategorii co strony typu "oglądac przeglądarką taką-a-taką przy rozdzielczości takiej-a-takiej". Podobnie żałosna amatorszczyzna.
Javascript jest po to, żeby umiec się bez niego obywać... ;)

konto usunięte

Temat: duży problem!!!!

Jarosław Rafa:
Piotr Likus:

JavaScript zablokowany - żaden problem. "Ta funkcja wymaga włączonego JavaScript" - zawsze można pokazać taki bloczek.
[...]
Podobnie żałosna amatorszczyzna.
Javascript jest po to, żeby umiec się bez niego obywać... ;)

;) Bez komentarza

konto usunięte

Temat: duży problem!!!!

Jarosław Rafa:
Javascript jest po to, żeby umiec się bez niego obywać... ;)

W 99% przypadków masz rację. Są jednak serwisy, których główną zaletą w stosunku do reszty jest stosowanie AJAX-a. I takich serwisów będzie przybywać.
Filip Czapeczka

Filip Czapeczka Senior Project
Manager

Temat: duży problem!!!!

Masz rację - są takie serwisy, i znowu masz rację, będzie ich więcej. Lecz nie masz racji, jeżeli uważasz, że taki serwis, chcąc być profesjonalnym, pozwoli sobie, by użytkownik widział informację "strona wymaga włączonej obsługi javaScript". Wszystkie rzeczy, które są funkcjonalne, możemy robić po stronie serwera, jedyny tego minus to liczba przesyłanych danych oraz usability.
Piotr Lewandowski

Piotr Lewandowski Programista
aplikacji
internetowych (PHP,
MySQL, SF2, Mag...

Temat: duży problem!!!!

Jarosław Rafa:
Piotr Likus:

JavaScript zablokowany - żaden problem. "Ta funkcja wymaga włączonego JavaScript" - zawsze można pokazać taki bloczek.

I wkur... uzytkownika.
Ja osobiście jak widzę, że prosta funkcjonalnośc, którą spokojnie dałoby sie uzyskać czystym HTML-em i skryptem server-side, "wymaga włączonego javascriptu", to zazwyczaj pieprznę taką stroną w diabły.
Strony, które "wymagają włączonego javascriptu", należy zaliczyć do tej samej kategorii co strony typu "oglądac przeglądarką taką-a-taką przy rozdzielczości takiej-a-takiej". Podobnie żałosna amatorszczyzna.
Javascript jest po to, żeby umiec się bez niego obywać... ;)

Uważam, że nie można też popadać w skraności. W bardzo wielu przypadkach javascript poprawia funkcjonalnosc. Niewidze tez przeslanek ku wylaczaniu javascriptu w przegladarce na przecietnej stacji roboczej / komputerze domowym.

http://www.google.com/webhp?complete=1&hl=en
Wedlug mnie JS w tym wypadku znacznie poprawia funkcjonalnosc. Oczywiscie moznaby osiagnac to uzywajac tylko i wylacznie html i serverside. Jendak nalezy zadac sobie pytanie czy wtedy faktycznie byloby bardziej funkcjonlane? Np Wpisanie czesci frazy -> przeladowanie strony w celu wyswietlenia sugestii -> Wybranie frazy kora chcemy szukac, po czym przeladowanie strony w celu wyswietlenia wynikow.
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: duży problem!!!!

Piotr Lewandowski:

Uważam, że nie można też popadać w skraności. W bardzo wielu przypadkach javascript poprawia funkcjonalnosc. Niewidze tez przeslanek ku wylaczaniu javascriptu w przegladarce na przecietnej stacji roboczej / komputerze domowym.

Nie pisałem o poprawieniu funkcjonalności przy uzyciu javascriptu, tylko o tworzeniu serwisów które wymagają javascriptu. Przeciwko pierwszemu nic nie mam, natomiast drugie uważam za totalne nieporozumienie. A o tym była mowa - cytuję: "Ta funkcja wymaga włączonego JavaScript" - zawsze można pokazać taki bloczek. Zawsze powinna istnieć alternatywna, może mniej funkcjonalna, metoda korzystania z serwisu bez javascriptu.
Chociażby dlatego, że np. przeglądarki na telefony komórkowe czy urządzenia typu set-top-box umożliwiające korzystanie z Internetu za posrednictwem telewizora często nie obsługują javascriptu w ogóle. A użytkownik wpływu na oprogramowanie nie ma żadnego, bo raz jest ono zaszyte w ROM-ie, a dwa, nawet nie ma alternatywy, jakby ktoś chciał tego ROM-a przeflashować...
Tomasz Struczyński

Tomasz Struczyński TeamLeader PHP i
analityk

Temat: duży problem!!!!

Jarosław Rafa:
>
Chociażby dlatego, że np. przeglądarki na telefony komórkowe czy urządzenia typu set-top-box umożliwiające korzystanie z Internetu za posrednictwem telewizora często nie obsługują javascriptu w ogóle. A użytkownik wpływu na oprogramowanie nie ma żadnego, bo raz jest ono zaszyte w ROM-ie, a dwa, nawet nie ma alternatywy, jakby ktoś chciał tego ROM-a przeflashować...

Ano właśnie... Spróbujcie w Operze mini obejrzeć stronę z dużą ilością JS. Mnie szlag trafia przy ZTM gdzie jest menu w JS i muszę chodzić do mapy strony...

Zaraz ktoś powie, że to margines i będzie się zmieniać, albo coś w tym guście... Pewnie, że się będzie zmieniać, ale jak w telefonach będzie js, pojawią się nowe urządzenia z przeglądarkami bez JS...

Ja tam lubię JS, i wszelkie graficzne/użytkowe bajery z jego udziałem. Ale sztuka w tym, żeby wiedzieć, kiedy skończyć.

Akurat w tym przykładzie rozwiązanie JS jest z punktu widzenia użytkownika najwyżej identyczne, a mniej stabilne, bardziej zależne od platformy i mniej przewidywalne od rozwiązania Server Side. Używanie JS jest tu chyba tylko sztuką dla sztuki...

Następna dyskusja:

Problem z php i excelem




Wyślij zaproszenie do