Download pomocí FileResponse

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

Narazil jsem právě na problém při implementaci downloadovacího skriptu, kdy během downloadu nemohl uživatel s webem nijak pracovat. Problém byl v tom, že aplikace používala session pro ověření uživatele a tuto session nezavřela před poskytnutím souboru (před voláním FileResponse::send). Ostatní requesty téhož uživatele tedy musely čekat na session, která po celou dobu downloadu nebyla k dispozici. Nemělo by Nette v tomto trochu pomoci, a nějak automaticky session zavírat před odesláním FileResponse?

Aktuálně tedy session zavírám ručně v presenteru:

	public function renderDefault($file)
	{
		// ... vytvoření $response ...

		$this->context->session->close();
		$this->sendResponse($response);
		$this->terminate();
	}

Také jsem si při studování zdrojového kódu třídy FileResponse všimnul, že ačkoli podporuje header Content-Range, tak nakonec stejně vrací celý zbytek souboru (místo žádaného intervalu), tj. seekuje správně podle levé hranice tohoto intervalu, ale pravou hranici ignoruje. Jde o opomenutí nebo je v tom nějaký záměr?

Editoval duke (1. 8. 2012 10:13)

Ondřej Mirtes
Člen | 1536
+
0
-

FileResponse s Content-Range jsem implementoval já. Není to záměr, můžeš poslat pull :)