#php #curl
#php #завиток #curl
Вопрос:
Я не знаю, почему это не работает. Я пытаюсь загрузить изображение с URL-адреса, а затем отправить его через CURL. POST запрашивает путь с var_dump
работает, но с CURL это не работает
Ошибка заключается в
Предупреждение: curl_file_create() ожидает, что параметр 1 будет допустимым путем, заданной строкой
// define('TMP', __DIR__ . DIRECTORY_SEPARATOR . 'tmp');
/**
* @param $url
* @return string
*/
function dlImage($url) {
$save_dir = TMP . DIRECTORY_SEPARATOR;
$filename = basename($url);
$save = $save_dir.$filename;
file_put_contents($save,file_get_contents($url));
return $save;
}
function upload( $body, $title, $type, $type_real, $subCat, $poster = null, $imdbUrl = null)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'xxxx');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
$data = [
'key' => 'xxxx',
'type' => $type,
'subtype' => $subCat,
'type_real' => $type_real,
'title' => $title,
'posterUpload' => curl_file_create(realpath(dlImage($poster)),'image/jpeg'),
'imdbUrl' => $imdbUrl,
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
var_dump($result);
}
// path is working fine
dlimage output (var_dump) : string(113)
"C:laragonwwwapitmpMV5BNDliY2E1MjUtNzZkOS00MzJlLTgyOGEtZDg4MTI1NzZkMTBhXkEyXkFqcGdeQXVyNjMwMzc3MjE@.jpg"
Ответ №1:
добавьте дополнительную проверку ошибок, замените
file_put_contents($save,file_get_contents($url));
с
$content=file_get_contents($url);
if(!is_string($content)){
throw new RuntimeException("failed to fetch url {$url}");
}
if(($len=strlen($content))!==($written=file_put_contents($save,$content))){
throw new RuntimeException("could only write {$written}/{$len} bytes to file {$save}");
}
тогда вы, вероятно, должны получить журнал ошибок, объясняющий, где что-то пошло не так, и я предполагаю, что что-то пошло не так с file_get_contents() и / или file_put_contents().