Nastaveni hlavicky pro přímé stažení souboru
- crookslovacko
- Člen | 75
Mám soubor pro stažení..Dá se íct OK ale pořád hází Notice:
Array to string conversion
public function setContentType($type, $charset = null)
141: {
142: $this->setHeader('Content-Type', $type . ($charset ? '; charset=' . $charset : ''));
143: return $this;
144: }
Moje odesílání
$httpResponse = $this->presenter->getHttpResponse();
$httpResponse->setHeader('Pragma', "public");
$httpResponse->setHeader('Expires', 0);
$httpResponse->setHeader('Cache-Control', "must-revalidate, post-check=0, pre-check=0");
$httpResponse->setHeader('Content-Transfer-Encoding', "binary");
$httpResponse->setHeader('Content-Description', "File Transfer");
$httpResponse->setHeader('Content-Length', filesize($filename));
$this->presenter->sendResponse(new Nette\Application\Responses\FileResponse($filename, $filename, array('application/octet-stream', 'application/force-download', 'application/download')));
$this->presenter->redirect('Gooods:mallsk');
}
Co vynechávám prosím.
Děkuju
- Marek Bartoš
- Nette Blogger | 1280
Array to string conversion
Ta chyba určitě vypadala spíš nějak takto
PHP Notice: Array to string conversion in your file on line 3
Tak si přečti, na jakém řádku ta chyba je a najdi na něm pole, které se
pokoušíš použít tam, kde jde použít jenom string.
Já ti rovnou napovím, že je to třetí parametr FileResponse, content type můžeš uvést jenom jeden.
- crookslovacko
- Člen | 75
Mabar napsal(a):
Array to string conversion
Ta chyba určitě vypadala spíš nějak takto
PHP Notice: Array to string conversion in your file on line 3
Tak si přečti, na jakém řádku ta chyba je a najdi na něm pole, které se pokoušíš použít tam, kde jde použít jenom string.Já ti rovnou napovím, že je to třetí parametr FileResponse, content type můžeš uvést jenom jeden.
Díky, ale právě jsem schválně poslal přesně co mi laděnka hodila, bez řádku.
- Marek Bartoš
- Nette Blogger | 1280
Ok, pravda, Tracy ti nenapíše číslo řádku v souboru, ta rovnou vykreslí pod chybu náhled souboru s červeně podbarveným řádkem, na kterém je chyba ;)
Zapni si strict types, pak se ta chyba změní z array to string conversion
na:
TypeError – Argument 3 passed to Nette\Application\Responses\FileResponse()
must be of the type string, array given, called in /path/to/script.php on
line 123`
- crookslovacko
- Člen | 75
Mabar napsal(a):
Ok, pravda, Tracy ti nenapíše číslo řádku v souboru, ta rovnou vykreslí pod chybu náhled souboru s červeně podbarveným řádkem, na kterém je chyba ;)
Zapni si strict types, pak se ta chyba změní z array to string conversion na:
TypeError – Argument 3 passed to Nette\Application\Responses\FileResponse() must be of the type string, array given, called in /path/to/script.php on line 123`
Děkuju za nákopy..Mě totálně zmátl jeden příklad. Jinak kdyby někdo potřeboval:
$this->presenter->sendResponse(new Nette\Application\Responses\FileResponse($filename, $filename,'UTF-8'));
- Marek Bartoš
- Nette Blogger | 1280
utf-8 není content-type, ale encoding. Nette navíc utf-8 nastavuje samo, nemusíš jej uvádět vůbec.