Загрузка Файла Curl Php

#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()),