CURL post de Arquivo via PHP

No PHP 5.6 e superior você tem o curl_file_create, você pode utilizar ele.
curl -F file=@/home/user/picture.jpg https://api.dominio.com/pictures
Isso indica exatamente:
  • -F indica que é um multipart/form-data e por isso o CURLOPT_POSTFIELDS deve ser passado por array.
  • O "file" indica o nome do parâmetro, ou seja a "chave".
  • O "/home/user/picture.jpg" indica o caminho do arquivo, o @ antes dele indica que é para ser lido o arquivo do caminho (e não enviado /home/user/picture.jpg como texto).
Sabendo disso basta utilizar o CURL do PHP:
$ch = curl_init('https://api.dominio.com/pictures');

curl_setopt_array($ch, [    
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => [          
      'file' => curl_file_create('/home/user/picture.jpg')
    ]
]);

$resposta = curl_exec($ch);
curl_close($ch);

Se estiver em versões antigas o PHP nem tudo está perdido, você pode utilizar:
CURLOPT_POSTFIELDS => [          
   'file' => '@/home/user/picture.jpg'
]

Comentários

Postagens mais visitadas deste blog

Instalação NetBeans

Calcular frete pelos correios via PHP