Загрузить изображение на внешний веб-сервис / API, используя Lumen / Laravel и Guzzle 6 - PullRequest
0 голосов
/ 27 марта 2020

Я хочу загрузить изображение в веб-сервис, используя Lumen + Guzzle 6. Внешний веб-сервис не принимает «base64-кодирование» отправляемого изображения. В качестве такового принимается только файл изображения.

Но я по-прежнему получаю сообщение об ошибке от внешнего веб-сервиса / API о том, что изображение не может быть найдено или, скорее всего, Guzzle отправил запрос без изображения. Проверка с file_exists ($ filename_with_path) отреагировала успешно, поэтому доступ к файлу обычно возможен.

Если я работаю с командной строкой cURL на консоли, у меня она работала нормально:

curl -v --user "username:password" ...

Большое спасибо за каждую подсказку.

Вот код проблемы:

$filename_with_path  = storage_path( 'app/pics/') . $file_name;        
$fileContent         = File::get( $filename_with_path );
$mime_type           = File::mimeType( $filename_with_path );
$this->guzzle_client = null;
$this->guzzle_client = new Client( [
    'auth'      => [
        'username',
        'password'
    ],
    'multipart' => [
        [
            'name'      => $file_name,
            'filename'  => $file_name,
            'contents'  => $fileContent,
            'mime-type' => $mime_type,
            'headers'   => [ 'Content-Type' => $mime_type ]
        ],
    ],
] );

// send
$this->response = $this->guzzle_client->request( 'PUT', $base_url . $endpoint ); 
...