Autor Zpráva
stepanka
Profil *
Ahoj,

prosím, nesetkal se někdy někdo s takovým problémem, že chtěl umožnit stažení souboru, ale místo toho se ten soubor jen vypíše na obrazovku?

U mě na localhostu (mám windows) to stažení funguje. Když to vystavím na server, který jede pod windows/IIS, tak stažení také funguje. Když to ale vystavím na server, který jede pod linuxem, tak se soubor (XLS tabulka) pouze vypíše na obrazovku a stažení se vůbec nenabídne.

Kód vypadá takto:

$write='<table>';

// vytvořím celou tabulku
		
$write.='</table>';


$export_dir='export';
$export_name='nazev-souboru.xls';

$fp = fopen ($export_dir.'/'.$export_name, "w");
if ($fp===false)
	{
	echo 'Create a new file failed.<br /><br />';
	}
else
	{
	fwrite ($fp, $write);
	fclose ($fp);
	} 
	


if (is_file($export_dir.'/'.$export_name))
	{
	header('Content-Type: text/html; charset=utf-8');
	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");
	header("Content-Type: application/vnd.ms-excel");                
        header("Content-type: application/x-msexcel");   

	header("Content-Disposition: attachment; filename=$export_name;");
	header("Content-Transfer-Encoding: binary");
	header("Content-Length: " . filesize($export_dir.'/'.$export_name));

	readfile ($export_dir.'/'.$export_name);
	}


Mockrát děkuju.
tiso
Profil
stepanka: rozhodni sa čo vlastne posielaš:
header('Content-Type: text/html; charset=utf-8');
...
header("Content-Type: application/vnd.ms-excel");
header("Content-type: application/x-msexcel");
stepanka
Profil *
tiso

Děkuju za reakci. Ten řádek

header('Content-Type: text/html; charset=utf-8');

jsem zkoušela také odstranit. V tom případě se mi zobrazila jen bílá obrazovka. Na dvou ostatních serverech ale tento řádek nevadí, soubory se nabídnou ke stažení.
tiso
Profil
stepanka: tých hlavičiek tam máš navyše viac...
Okrem toho tým, že poskladáš tabuľku v HTML a uložíš ju do súboru s príponou xls, z nej excelovský súbor nespravíš.
stepanka
Profil *
tiso

Nespravim? Už jsem takto vytvořila několik exportů do XLS. Tak jaké je podle Tebe, prosím, jiné řešení?
tiso
Profil
stepanka: http://www.google.com/search?&q=create+xls+file+with+php
stepanka
Profil *
tiso

Jo Tys myslel použít nějakou knihovnu, aha... o tom už jsem taky přemýšlela... Jsou to ale jednoduchoučké tabulky, tak mi přišlo zbytečné zabírat místo na serveru nějakýma knihovnama, když to není nutné. Přinejhorším by to ale šlo..

Spíš by mě ale teď zajímalo, proč se to na tom jednom serveru nenabídne ke stažení, když řádek s readfile tam je. A ve složce "export" s právy 777 se ten XLS soubor vytvoří. Jen se nenabídne ke stažení.. Nerozumím tomu
stepanka
Profil *
Už jsem problém vyřešila. Chyba byla v posílání hlaviček. Měla jsem omylem zapoznámkované vypisování chyb, jinak mi to vypisovalo "Header already sent...". Dala jsem na začátek ob_start(); a funguje to na všech serverech. Asi to teda nebylo linuxem..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: