Nastaveni hlavicky pro přímé stažení souboru

crookslovacko
Člen | 74
+
0
-

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 | 1167
+
+1
-

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 | 74
+
0
-

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 | 1167
+
0
-

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 | 74
+
0
-

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 | 1167
+
0
-

utf-8 není content-type, ale encoding. Nette navíc utf-8 nastavuje samo, nemusíš jej uvádět vůbec.