Zadejte hledaný výraz...

Upload souboru pres CURL v PHP

Ahoj,
v bashi pouzivam pro nahrani souboru pres API k dodavateli tento prikaz:
curl -k --netrc -X POST -F queryspecname='something' -F queryfile=@/tmp/soubor.gz https://domena.com/api
V PHP to mam prepsany takto:
$data = array();
$data = $queryspec;
$data = "@/tmp/soubor.gz;filename=soubor.gz";
$process = curl_init($url);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($process, CURLOPT_TIMEOUT, 50);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, $data);
curl_setopt($process, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($process);
curl_close($process);
Vysledek je, ze mi ma dodavatel vratit nazev souboru ktery vygeneruje u sebe a ten je ve formatu:
neco-nazevmyhosouboru-timestamp.gz
Pokud mu vsak soubor zadny nedam, tak mi vygeneruje obecny data a vysledek je:
neco-timestamp.gz
Problem co resim je, ze v PHP mi vraci tu druhou verzi bez nazvu souboru (cervenou), tedy jakoby ho v POSTu nedostal.
Netusi nekdo co tam mam blbe ?
H.
PS: nefunguje to ani bez toho ;filename=soubor.gz
13. 4. 2018 19:39:27
https://webtrh.cz/diskuse/upload-souboru-pres-curl-v-php#reply1340443
P8j6
verified
rating uzivatele
(9 hodnocení)
13. 4. 2018 20:13:13
Jakou verzi PHP používáte? Prefix @ je už od PHP 5.5. depreaced. A v PHP 7 úplně odstraněn.
Místo něj se používá: http://php.net/manual/en/class.curlfile.php
Viz http://php.net/manual/en/function.curl-setopt.php direktiva: CURLOPT_SAFE_UPLOAD
edit: Jestli jste v PHP < 7, tak zkuste nastavit
curl_setopt($process, CURLOPT_SAFE_UPLOAD, TRUE);
13. 4. 2018 20:13:13
https://webtrh.cz/diskuse/upload-souboru-pres-curl-v-php#reply1340442
Diky moc! Vubec jsem si nevsiml ty zmeny ...
Je to PHP 7.1 , tak jsem to upravil na CURLFile, a funguje to dobre.
13. 4. 2018 20:32:32
https://webtrh.cz/diskuse/upload-souboru-pres-curl-v-php#reply1340441
Pro odpověď se přihlašte.
Přihlásit