Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: download
Forum PHP.pl > Forum > PHP
acid_100
Witam!

W jaki sposob mozna zreazlizowac download plikow. Mam pliki, kotrych do ktorych mam linki na stroni i chcialbym aby po wybraniu pliku otworzylo sie okno z zapytaniem gdzie zapisac ten plik. Chce pozbyc sie otwierania automatycznego plikow w oknie przegladarki jak to jest np z doc czy pdf
zalew
daj te na glowki
[php:1:cc102e0f92]<?php
header("Cache-control: private");
header("Content-Type: ".$typ_twojegopliku);
header("Content-Length: ".filesize($twojplik));
header("Content-Disposition: attachment; filename=".$twojplik);
?>[/php:1:cc102e0f92]
a po nich wrzuc zawartosc twojego pliku... fopen() itd...
matid
Albo takie nagłówki:
[php:1:bf3e7ff560]
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename=' . $nazwa_pliku);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen($zawartosc_pliku));
echo $zawartosc_pliku;
[/php:1:bf3e7ff560]
Cudi
Hmmm... niestety takie nagłowki są nieskuteczne przy dużych plikach, bo wczytywanie zawartości z nich zajmuje php wieki. Natamiast odesłanie do pliku przez header( 'location: nazwa_pliku' ); kończy sie w mozilli otwieraniem strony z zawartością pliku, niezależnie od rozszerzenia :/
Jak zmusić Mozille by pobierała pliki z adresu na który ją przekierunkujemy, a nie próbowała otwierać strony z zawartością?
-----------------
Co mnie bardzo zdziwiło, w IE 6.0 pojawia sie normalny monit pobierania.
matid
To zależy jaki rodzaj pliku, bo tylko niektóre się tak zachowują. Niestety od strony serwera nie można nic na to zaradzić. Jedynym wyjściem jest chyba użycie sposobu który Ci podałem.
[fisher]
Cytat
Albo takie nagłówki:
[php:1:100f869b54]
header('Content-Type: application/force-download');
header('Content-Type: application/octet-stream');
header('Content-Type: application/download');
header('Content-Disposition: attachment; filename=' . $nazwa_pliku);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen($zawartosc_pliku));
echo $zawartosc_pliku;
[/php:1:100f869b54]


nie do konca tak, gdyz czesto pliki sa z binarna zawartoscia, wiec zamiast strlen() uzylbym filesize() i zamiast echo $zawartosc_pliku uzylbym funkcji readfile()
a poza tym wypadaloby jeszcze wyslac Content-type wysylanego pliku

Cytat
Hmmm... niestety takie nagłowki są nieskuteczne przy dużych plikach, bo wczytywanie zawartości z nich zajmuje php wieki.

Czasami tak sie nie da (pobieranie zalacznikow poczty elektronicznej) gdy nie ma regularnych plikow
Cytat
Co mnie bardzo zdziwiło, w IE 6.0 pojawia sie normalny monit pobierania.

IE to nie jest przegladarka (a narzedzie do wykonywania windowsupdate) - wiec nie dziwi mnie kazda jej odkryta ulomnosc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.