Kdyby/curl Please provide a writable directory for download

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

Dobrý den,

mám problém se stahováním xml souboru z adresy. Vždycky mně to zařve hlášku:

	Please provide a writable directory for download

Spadne to tady v CurlSender.php

if ($request->isMethod(Request::DOWNLOAD)) {
244:                if (!is_dir($this->downloadDir)) {
245:                    throw new DirectoryNotWritableException("Please provide a writable directory for download.");
246:                }
247:                FileResponse::prepareDownload($curl, $this->downloadDir);
248:
249:            } else {

volám to takto:

$response =  $request1->download($this->tempStorage);

složka tempStorage je vkladana v configu takto:

	"%tempDir%/download"

Celý můj kód vypadá takto:

			$request = new Request($urlXml);
			$request->method = Request::DOWNLOAD;
			$request->cookies = $cookies;  // vkladam tam navic cookies
			$request->options = array(
				"RETURNTRANSFER" => 1,
				"SSL_VERIFYHOST" => 0,
				"SSL_VERIFYPEER" => 0,
			);

			$response =  $request->download($this->tempStorage);
echo
Člen | 134
+
+1
-

A je složka „%tempDir%/download“ vytvořená a zapisovatelná?

Jan Endel
Člen | 1016
+
0
-

plus bych doporučoval ten tempDir si buď dumpnout nebo lépe vydebuggovat – jestli se ti správně v něm expandne cesta.

ondrej256
Člen | 187
+
0
-

Jak poznám jeslti je složka zapisovatelná?
Vytvořená je. Zkoušel jsem to i s cestou %tempDir% a dopadlo to stejně.

A cesta se vytvoří správně, psal jsem ji i ručně celou a vždycky ta Exceptiona

Jan Endel
Člen | 1016
+
0
-
ondrej256
Člen | 187
+
0
-

win

ondrej256
Člen | 187
+
0
-

Zvláštní je, že když si dám před volání funkce download

			if (!is_dir("C:/wamp/www/system/temp")) {
				dump( "false");
			} else {
				dump("true");
			}

tak se mně dumpne true, ale pak když zavolám funkci download tak uvnitř ní se volá vlastně uplně to samé, ale skočí to false

ondrej256
Člen | 187
+
0
-

je nějaký jiný způsob jak obejít funkci download k uložení souboru?

ondrej256
Člen | 187
+
+1
-

Zjistil jsem, že $downloadDir v CurlSender.php je prázdná NULL

leninzprahy
Člen | 150
+
0
-

ondrej256 napsal(a):

Zjistil jsem, že $downloadDir v CurlSender.php je prázdná NULL

Jsi na dobré cestě :) Kde nastavuješ

$this->tempStorage

?

ondrej256
Člen | 187
+
0
-

v configu

Před tímto řádkem je v $this->tempStorage správná hodnota. Nenastavuje se to ještě nějak jinak?

$response =  $request->download($this->tempStorage);
David Matějka
Moderator | 6445
+
+1
-

kde jsi prisel na to, ze do metody download se predava jako parametr downloadDir?

Tam se predavaji post data

downloadDir se nastavuje curl senderu

ondrej256
Člen | 187
+
0
-

jo super, dík :-)

leninzprahy
Člen | 150
+
0
-

@matej21 má pravdu, stačí si přečíst zdrojáky…

mělo by to vypadat asi takto, viz dokumentace

$request = new Request($urlXml);
$request->method = Request::DOWNLOAD;
$request->cookies = $cookies;  // vkladam tam navic cookies
$request->options = array(
    "RETURNTRANSFER" => 1,
    "SSL_VERIFYHOST" => 0,
    "SSL_VERIFYPEER" => 0,
);


$curl = new Kdyby\Curl\CurlSender();
$curl->setDownloadDir($this->tempStorage);

$response = $curl->send($request);