#php #image #curl
Вопрос:
Я работаю над проектом, в котором мне нужно загрузить изображение с помощью cURL. Имя моего изображения неправильно сохраняется в базе данных.
Я отправляю нижеприведенную строку кода в свой SDK,в котором есть функция получения всех данных и передачи их на маршрут.
$data = array(
"appCode" => $appCode,
"logo" => new CURLFILE($request->logo),
"descriptionOfUse" => $request->descriptionOfUse,
"descriptionOfFetch" => $request->descriptionOfFetch,
"cancellationUrl" => $request->cancellationUrl ?? null,
"helpPageUrl" => $request->helpPageUrl,
"consentValidatityDays" => $request->consentValidatityDays ?? 0,
);
Файл SDK
public function addConsentRule($data)
{
$curl = curl_init();
dd($data);
curl_setopt_array($curl, array(
CURLOPT_PORT => $this->port,
CURLOPT_URL => $this->endPointUrl . "consentRule",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $data,
CURLOPT_HTTPHEADER => array(
"Accept: application/json",
// 'Content-Type: multipart/form-data;'
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
// return $response;
return json_decode($response, true);
}
}
Когда я определяю переменную, которую я передаю в SDK, она пропускает mime и postname, и ответ ниже
array:7 [
"appCode" => "2y105LSDDbI2ZML201a1VnrekOdIsA2SR06mWYhmIWZ3vsm4jE312S"
"logo" => CURLFile {#317
name: "/tmp/phpUY9KmN"
mime: ""
postname: ""
}
"descriptionOfUse" => "use"
"descriptionOfFetch" => "fetch"
"cancellationUrl" => "uri"
"helpPageUrl" => "uri"
"consentValidatityDays" => "45"
]
Комментарии:
1. Похоже, что CURLFile ожидает эти значения в конструкторе. php.net/manual/ru/curlfile.construct.php
Ответ №1:
Нашел решение,может быть кому-то полезно.
getRealPath() ,получит путь.
getMimeType() ,получит тип изображения
getClientOriginalName() ,получит имя файла
"logo" => new CurlFile($request->logo->getRealPath(), $request->logo->getMimeType(), $request->logo->getClientOriginalName()),