stažení inline souboru přes hlavičky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
onny
Člen | 67
+
0
-

Dobrý den, snažím se přímo nějaký obsah předat prohlížeči jako soubor ke stažení (bez kroku uložení), což mě dovedlo ke kódu:

$name = 'objekt.vcf';
$httpResponse = Environment::getHttpResponse();
Environment::getHttpResponse()->setHeader('Pragma', "public");
Environment::getHttpResponse()->setHeader('Expires', 0);
Environment::getHttpResponse()->setHeader('Cache-Control', "must-revalidate, post-check=0, pre-check=0");
Environment::getHttpResponse()->setHeader('Content-Transfer-Encoding', "binary");
Environment::getHttpResponse()->setHeader('Content-Description', "File Transfer");
Environment::getHttpResponse()->setHeader('Content-Disposition', 'attachment; filename="' . $name . '"');
$httpResponse->setContentType('text/directory', 'UTF-8');
print $obsah;

$this->terminate();

Výsledek 0 = prázdná obrazovka. Je tam něco zle?

HanziQ
Člen | 16
+
0
-

Asi jsem slepej, ale kde jsi vzal proměnnou $obsah?

onny
Člen | 67
+
0
-

Přijde z presenteru (data jsou, ověřeno) – nicméně i kdyby nebyly, mělo by to vytvořit prázdný soubor.

onny
Člen | 67
+
0
-

Tak zajímavý zvrat, předělal jsem aplikaci z 0.9 na Nette 2 Alpha 2 a funguje to jak má, čili možná nějaká chybka některé z minulých revizí.

marek.dusek
Člen | 99
+
0
-
  1. co je v logu nette/apache?
  2. co se stane, pokud pridas nekam nakonec file_put_contents(‚dump‘, $obsah); neni to cele jen prohlizecem, ktery neumi ten mime typ? co kdyz se mime zmeni na text/plain?

+

  1. neni zbytecne si vytahnout response a pak do i lezt stejne pres Environment:: .. ? ;)
  2. videls DownloadResponse?

EDIT: tak fajn ;)

Editoval marek.dusek (14. 11. 2010 14:42)