PHP上的-F Curl选项

时间:2017-05-30 15:37:19

标签: php curl

我正在尝试在PHP中运行CURL命令以将图像上传到API 文档中提到的代码是:

curl -u 15:tokenkeyiskmzwa8awaa https://api.bukalapak.com/v2/images.json -F file=@product-image.png -X POST

尝试过使用运行此curl命令的mac终端(使用正确的用户名和密码)并在上传时成功获得结果,但是在PHP上没有成功完成。 我的PHP代码是:

<?php

$data = array('file'=> '@'.$imagePath ); 

// this is an absolute path, give something like D://folder/path/on/my/webserver/image.jpg

$user = '1234567';

$pass = '123456';

$ch = curl_init();

$curl_options[CURLOPT_URL]  = 'https://api.bukalapak.com/v2/images.json';

$curl_options[CURLOPT_CAINFO] = storage_path('app/cacert.pem');

$curl_options[CURLOPT_HEADER] = "Content-Type: application/x-www-form-urlencoded";

$curl_options[CURLOPT_POST] = 1;

$curl_options[CURLOPT_USERPWD] = $user.':'.$pass;

$curl_options[CURLOPT_POSTFIELDS] = http_build_query($data);

curl_setopt_array($ch, $curl_options);

$content = curl_exec($->ch);`

卷曲版本:7.47.1 PHP版本:5.6.21 任何反馈都非常感激。

1 个答案:

答案 0 :(得分:1)

您没有发布完整的脚本:$curl_options未定义,storage_path与Laravel相关但没有导入等。 类似下面的脚本应该按预期工作(我没有测试它,因为我没有这个服务的帐户):

<?php

$imagePath = 'path/to/your/image.ext';
$user = 'youruser';
$pass = 'yourpass';

$file = curl_file_create($imagePath);
$body = ['file' => $file];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.bukalapak.com/v2/images.json');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, $user.':'.$pass);
curl_setopt($ch, CURLOPT_CAINFO, 'path/to/cacert.pem');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
$result = curl_exec($ch);
curl_close($ch);