![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 1 Dołączył: 18.06.2002 Skąd: poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Jestem nowym członkiem tego szanownego forum, ale nie jestem nowicjuszem w php. Spotkałem się jednak z pewnym problemem, który wydaje się (przy mojej obecnej wiedzy) nie do przejścia. Mam serwer WWW (linux) z Apachem, php i bazami MySQL - można rzec - rozwiązanie wzorcowe. Strony na nim udostępnione służą do odczytywania bazy zawierającej wpisy z lokalizacjami na dyskach plików, które użytkownicy mogą sobie ściągać. Problem polega na tym, że pliki te są plikami tekstowymi, co powoduje, że link z adresem URL pliku (odczytanym z bazy, a będącym po prostu linkiem do FTP-a) prowadzi do wyświetlenia zawartości pliku w oknie przeglądarki. Próbowałem już skorzystać ze znalezionego na Necie mechanizmu wymuszania zapisu na dysk ( Kod header("Content-Type: application/save"); ) , co nawet doprowadzało do wlaściwego zachowania przeglądarki, lecz nie pozwalało na fizyczne odczytanie pliku. ("Internet Explorer nie mógł otworzyć miejsca w podanej lokalizacji"). Co ciekawe problemu nie było, gdy klientem był Netscape działający na Linuksie. Ale niestety musi być to IE-friendly - nie mój wybór.
Zastosować musiałem mechanizm polegający na wypisaniu na stronach typu "download", że pliki zapisujemy klikając prawym klawiszem i "Zapisz jako...". Dla prostych ludzi, którzy z tego mają korzystać - przeczytać nie znaczy zrozumieć. Musi to się odbyć poprzez normalnie kliknięcie lewym przyciskiem myszy. Zatem pomóżcie kochani koledzy programiści - podpowiedzcie jak to zrobić. Założenia: skrypt nazywa się download.php i to on z bazy odczytuje nazwę pliku otrzymując jako parametr jedynie ID pliku bazie. Skrypt jest otwierany po kliknięciu na link do pliku w nowym oknie, które zamienia się w okno typu "Otworzyć/Zapisać" i zapisać można plik pod nazwą taką, jak na serwerze FTP (choć oczywiście z możliwością zmiany nazwy i lokalizacji). Po przesłaniu pliku okno znika. Wiem - można byłoby zastosować gotowe biblioteki plików, lecz zakres przeróbek byłby zbyt duży, aby nie powodowały u użytkowników frustracji z powodu ich własnej niewiedzy. Wspomniany działanie uzyskać można także oczywiście poprzez użycie tylko jednego headera ( Kod header("location: ftp://cos_cos/nazwa_pliku.txt"); ), ale działa to poprawnie tylko z plikami typu ZIP lub wykonywalnymi. Tekst się wyświetla!
Sorry, że przynudzam, ale bardzo mi zależy na tym, aby móc wreszcie oddać "system" do użytkowania w trybie produkcyjnym - następne zadania w pracy czekają, a czas goni... Od razu dzięki za wszelkie sugestie. Pozdrawiam [/b] |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 456 Pomógł: 0 Dołączył: -- Ostrzeżenie: (0%) ![]() ![]() |
ciezko bedzie...
IE wszytsko co rozpozna nie daje do downloadu.. ....lecz sa wyjscia np: robisz plik text.php a w nim Kod <?
header(Content-Type: dupa"); include("plik.txt"); ?> ..IE nie rozpozna tego i wywala okno zapisz jako... ..minusem tego rozwiazania jest ze User nie otrzyma *.txt lecz *.php a w nim zawartosc pliku.txt... wspominales ze robisz to na swoim serwerze wiec mozesz w jednym katalogu skonfigurowqac serwer tak zeby php parsowalo pliki *.txt.. ....a tym pliku robisz tak jak wyzej napisalem ..i bedzie hulac, a user otrzymuje *.txt ..inne rozwiazania to archiwa... ....zreszta szczerze ci powiem ze ja nigdy jeszcze nie widzialem serwisu ktory daje do downloadu pliki *.txt. ....mi sie zdaje ze w zupelnosci wystarcza otworzenie pliku w nowym oknie z mozliwoscia wydrukowania,a jesli ktos bedzie chcial se to zapisac to walnij mu linaka z notatka o prawym klawiszu lub ze musi w listwie IE pod PLIKI /ZAPISZ JAKO... ...no i jeszcze linka do archiwum (*.zip) :wink: |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.09.2025 - 17:09 |