nefukcni FileResponse v google chrome

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

Ahojte, mám problém s Nette\Application\Responses\FileResponse.
V Google Chrome se nechce stáhnout soubor a v download panelu se zobrazí jen „Přerušeno“. V ostatních prohlížečích se zobrazí výzva k uložení souboru a bez problémů se stáhne.
Kód:

<?php
    public function actionDefault($id) {

	$invoiceNumber = getInvoiceNumber($id);

        $dr = new FileResponse(
            FILES_DIR . '/faktury/faktura-'.$invoiceNumber.'.pdf',
            'faktura-'.$invoiceNumber.'.pdf',
            "application/pdf"
        );

        $this->sendResponse($dr);
}
?>

nějaké nápady?
Díky

22
Člen | 1478
+
0
-

nevadí ta vodorovná pomlčka v názvu souboru?

bojovyletoun
Člen | 667
+
0
-

mě to funguje v chrom 12 $this->sendResponse(new N\A\R\FileResponse(__FILE__,"fa-gf.pdf","application/pdf"));
zkus jiné jména a content type

Editoval bojovyletoun (30. 6. 2011 22:03)

22
Člen | 1478
+
0
-

podařilo se ti to nějak vyřešit?
narazil jsem na něco podobného se zapnoutou zlib kompresí.. chrome pak nesedí Content-Lenght a stahovaní přeruší.

trubi
Člen | 25
+
0
-

Ani když kompresi vypnu, žádná změna.
Dodnes jsem se k tomu nedostal, ale teď jsem to vyřešil tak, že jsem si to pdfko předgeneroval, uložil do adresáře přístupného z webu a potom button na stáhnutí směruje přímo na ten pdf soubor. Žádné jiné funkční řešení jsem bohužel neobjevil.

edke
Člen | 198
+
0
-

Ahojte,

neprisli ste na tento problem nahodou ? Mam s tymto problem s Nette dlhodobo, Chrome, Chromium, Firefox … sprava sa to rovnako. Stiahne sa dlzka suboru a potom sa ale progress kolecko v Chrome toci dalej a neukonci sa stahovanie.

David Grudl
Nette Core | 8228
+
0
-

Asi by to chtělo omrknout, jaké hlavičky se posílají a postupně je eliminovat.

iguana007
Člen | 970
+
0
-

U mě vypnutí zlib komprese v configu problém s FileResponse vyřešilo.
U mě se to ale chovalo tak, že to dělalo ve FF i Chrome (Win i Linux) – ale nepřerušilo mi to download, ale tvářilo se to, že to stáhlo celý soubor – vždy ale kousek na konci souboru chyběl.
Testováno na Nette 2.0.4 2f3808e released on 2012–07–30 a PHP 5.3.15–1.
Dělalo mi to ale i ve starších verzích.

Editoval iguana007 (2. 8. 2012 23:33)

jansfabik
Člen | 193
+
0
-

Při posílání FileResponse mi Google Chrome normálně ten soubor začne stahovat, ale až dojde na konec, tak chvíli dělá, že stahuje dál. Nakonec po několika sekundách zjistí, že už není co stahovat, tak s tím přestane.

Nešlo by s tím něco udělat?

Myslím, že čistým řešením by bylo zavedení metody Http\Response::setContentLength(), která by tuto hlavičku ignorovala, pokud bude detekováno zlib.output_compression.

Jan Navratil
Člen | 9
+
0
-

zdravim vsechny,

mam bohuzel stejny problem s nejnovejsim Nette (2.0.6) – zkousim nasledujici kod, ktery v Chrome vrati soubor s obsahem Homepage presenteru, ale stale je spojeni prerusene.

<?php
        public function renderTest()
        {
                $this->sendResponse(new Nette\Application\Responses\FileResponse('/var/www/html/sandbox/app/presenters/HomepagePresenter.php',NULL,'text/plain'));
        }
?>

Internet Explorer 8 mi nestahne zadny soubor.

FileResponse je tak nepouzitelny i kdyz nastavim korektne content-type.

Je to bug nebo featura? :-/

jansfabik
Člen | 193
+
0
-

V masteru je to opravené a ve verzi 2.0.6 taky. Problém bude někde jinde.

Jan Navratil
Člen | 9
+
0
-

to mate pravdu, zapinani a vypinani zlib komprese ma vliv na velikost odpovedi, ale nikoliv na to, ze je odpoved povazovana za prerusenou.

Cili je to novy bug?