我正在编写一个脚本来将图像上传到特定的api。上传一个图像不是问题,而是一个以上。 API文档说明如下:
curl -v -s -u username:password \
-H "Content-Type: multipart/form-data" \
-H "Accept: application/vnd.de.xxx.api+json" \
-F "image=@img1.jpeg;type=image/jpeg" \
-F "image=@img2.jpeg;type=image/jpeg" \
-XPUT 'https://services.xxx.de/seller-api/sellers/123/ads/123/images'
我的剧本:
$ch = curl_init();
$images = array(
'image' => new CURLFile('PATH\1.jpg', 'image/jpeg', 'image')
);
curl_setopt($ch, CURLOPT_URL, 'https://services.xxx.de/seller-api/sellers/123/ads/123/images');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, $images);
curl_setopt($ch, CURLOPT_USERPWD, 'USERNAME:PASSWORD');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Host: services.xxx.de',
'Content-Type: multipart/form-data',
'Accept: application/vnd.de.xxx.api+json'
));
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
问题是,如果我上传新的图片,api会删除其他图片。但我无法编写一个包含多个相同键的数组:
$images = array(
'image' => new CURLFile('PATH\1.jpg', 'image/jpeg', 'image'),
'image' => new CURLFile('PATH\2.jpg', 'image/jpeg', 'image')
);
所以问题是如何使用与文档中的curl命令相同的索引设置多个CURLFiles?
答案 0 :(得分:0)
在移动卖家api工作;-) 这是解决方案: 1.创建一个像这样的图像文件数组:
$count=0;
$files['image'.$count] = curl_file_create(#a#, 'image/jpeg', #b#)
$count++;
- > #a#服务器上文件的完整限定路径 - > #b#可选择以图像形式显示图像的名称'。$ count
重要提示:数组键必须完全以这种方式命名,而您可以根据需要命名数组; - )
顺便说一句,在所有实际的php版本中,我们使用TRUE和FALSE而不是0和1作为curl-options的值。
对我有用......
答案 1 :(得分:-1)
经过数小时搜索后的经验: 使用官方卷曲功能,您无法进行多重上传图像。
您只能使用shell命令上传多个图像。 解决方案:扩展shell脚本以包含要上载的所有图像,然后" shell_exec($ str)"或者执行($ str)。对我来说这很有效。