Jak wysłać plik z przeglądarki do użytkownika?

Aby zmusić przeglądarkę do wysłania pliku (Zapisz jako …) należy wysłać odpowiednie nagłówki:

header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: public');
header('Content-Description: File Transfer');

// uzywamy force-download ze wzgledu na roznice pomiedzy przegladarkami
header("Content-Type: application/force-download");
header('Content-Disposition: attachment; filename="plik.zip"');
header('Content-Transfer-Encoding: binary');
header("Content-Length: $wielkosc");

@readfile($link);
exit;

Powyższy kod zmusi przeglądarkę do wysłania pliku zamiast wyświetlania, zauważ że nazwa pliku umieszczona jest wewnątrz cudzysłowiów co zapobiega utracie rozszerzenia lub częsci nazwy jeśli wystepują spacje lub białe znaki.

Nazwa pliku powinna być odpowiednio przygotowana wcześniej i dla zgodności z wszystkimi systemami i przeglądarkami wytnij białe znaki, apostrofy, cudzysłowia i kropki (za wyjątkie tej przed rozszerzeniem)

Przykład:

$nazwapliku = str_replace("'","",$nazwapliku);
$nazwapliku = str_replace(".","",$nazwapliku);
$nazwapliku = str_replace(" ","_",$nazwapliku);
$nazwapliku = str_replace("/","_",$nazwapliku);

Następnie doklej rozszerzenie

$link = '/katalog/plik.zip';
$filename = basename($link);
//zwróci 'zip'
$file_extension = strtolower(substr(strrchr($filename,"."),1));

Nowa nazwa pliku to:

// dodajemy kropke
$nowa_nazwa = $nazwapliku.'.'.$file_extension;

// wynik: plik.zip

Ostatnio zmienna któej używamy jest $wielkosc i jest to rozmia pliku w bajtach, który można odczytać funkcja filesize. Niektóre przeglądarki nie wymagają tego nagłówka ale dla zachowania uniwersalności doklejamy go dając znać przeglądarce jak duży ma plik.
W niektórych przeglądarkach plik zapisuje sie na dysku z zerową ilością danych jeśli pominiem ten nagłówek

źródło: http://viagra-pfizer.org/tag/kamagra/, chirurgia stomatologiczna gorzów, zegarki speedo

Powiązane wpisy:

Powiązane słowa kluczowe:

  • jak wysłać link na facebooku
  • pragma: public
  • jak wysłać link
  • jak wyslac link na facebooku

Comments are closed.