Я могу успешно и вручную загрузить изображения на другой API-сервер с помощью этой командной строки на сервере. SHELL / BASH:
curl -v --user "myusername:mypassword" --header "Content-Type: image/jpeg" -X PUT -T /homepages/abc123/myfolder/mypic.jpeg https://other-server.com/api/upload/picture
Как это сделать автоматически с PHP и cURL?
Моя первая попытка выглядит следующим образом:
$url = 'https://other-server.com/api/upload/picture';
$filename_with_path = realpath('myfolder/mypic.jpeg');
$file_data[ 'myfile' ] = new \CURLFile( $filename_with_path, 'image/jpeg', 'mypic.jpeg' );
$curl = curl_init();
curl_setopt( $curl, CURLOPT_URL, $url );
curl_setopt( $curl, CURLOPT_USERPWD, "$user:$password" );
curl_setopt( $curl, CURLOPT_HEADER, 1 );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Content-type: image/jpeg' ) );
curl_setopt( $curl, CURLOPT_CUSTOMREQUEST, "PUT" );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $file_data );
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$result = curl_exec( $curl );
if(!curl_errno($curl))
{
$info = curl_getinfo($curl);
return ( $info['http_code'] ); // 400=Bad request, 200=ok
}
curl_close( $curl );
if ( empty( $result ) ) {
$error_msg = '[empty]';
return $error_msg;
}
return ( $result );
Но я всегда получал сообщение об ошибке с API-сервера, MIME-файл неверен. Я думаю, что файл образа не может быть найден cURL / PHP и не может быть отправлен на API-сервер, поэтому ошибка-массаж!
В некоторые дни go Я пытался с Laravel Lumen. Это не работает. И теперь я go шаг назад с cURL, но он все еще не работает: Загрузить изображение на внешний веб-сервис / API, используя Lumen / Laravel и Guzzle 6
Что вы думаю