nefukcni FileResponse v google chrome
- trubi
- Člen | 25
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
- bojovyletoun
- Člen | 667
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)
- trubi
- Člen | 25
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.
- David Grudl
- Nette Core | 8228
Asi by to chtělo omrknout, jaké hlavičky se posílají a postupně je eliminovat.
- iguana007
- Člen | 970
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
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
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? :-/
- Jan Navratil
- Člen | 9
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?