首页 > 解决方案 > php curlstrapi cms 多张图片上传

问题描述

我正在尝试通过特定内容类型的 API 将多个图像上传到 Strapi CMS:产品。很难安静,或者我可能做错了。

如果我尝试通过例如邮递员创建创建请求,则会为 php 示例生成此代码:

CURLOPT_POSTFIELDS => array('files.ProductGallery'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.24.58.png'),'files.ProductGallery'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.22.03.png'),'data' => '{"Name" : "test"}','files.MainImage'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.22.03.png')),

如您所见,files.ProductGallery 正在被复制,因此如果我直接在 PHP 中运行它,即使邮递员生成此代码示例,这也不起作用。

解决这个问题的首选方法是什么?我试过以下(将图像嵌套到files.ProductGallery中:

$query = [
                'data' => $paramsData,
                'files.ProductGallery' => [new CURLFile('68a698b24509cc0539ec724238326c99.jpg', 'image/jpg', '68a698b24509cc0539ec724238326c99.jpg'), new CURLFile('68a698b24509cc0539ec724238326c99.jpg', 'image/jpg', '68a698b24509cc0539ec724238326c99.jpg')],
            ];

            curl_setopt_array($curl, array(
                CURLOPT_URL => 'http://localhost:1337/products',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => $query,
            ));

但这给了我数组到字符串的转换。如果我尝试执行邮递员请求(直接进入应用程序),它实际上正在工作,但他们提供的 PHP 示例却很奇怪。我不是在谈论邮递员(我喜欢这个工具),只是想知道 php 示例代码,以及执行上述操作的首选方法是什么 :)

完整的邮递员示例:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'http://someurl/products',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_POSTFIELDS => array('files.ProductGallery'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.24.58.png'),'files.ProductGallery'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.22.03.png'),'data' => '{"Name" : "test"}','files.MainImage'=> new CURLFILE('/Users/testusr/Desktop/Screen Shot 2021-06-16 at 19.22.03.png')),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

与我尝试的相比:

$curl = curl_init();

            $query = [
                'data' => $paramsData,
                'files.ProductGallery' => [new CURLFile('68a698b24509cc0539ec724238326c99.jpg', 'image/jpg', '68a698b24509cc0539ec724238326c99.jpg'), new CURLFile('68a698b24509cc0539ec724238326c99.jpg', 'image/jpg', '68a698b24509cc0539ec724238326c99.jpg')],
            ];

            curl_setopt_array($curl, array(
                CURLOPT_URL => 'http://someurl/products',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_ENCODING => '',
                CURLOPT_MAXREDIRS => 10,
                CURLOPT_TIMEOUT => 0,
                CURLOPT_FOLLOWLOCATION => true,
                CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                CURLOPT_CUSTOMREQUEST => 'POST',
                CURLOPT_POSTFIELDS => $query,
            ));

            $response = curl_exec($curl);

标签: phpimageapicontent-management-systemstrapi

解决方案


推荐阅读