所以,为了抓住问题的核心,我想在worpress网站上发布一张图片api (v2).
问题的第一部分是我don\'t have a url or file path, 我只是有raw data of the image 在我之前导出的变量中。
问题的第二部分是,一旦发布(正常情况下),图像appears blank 在管理的媒体库中。
这是我的代码:
if (isset($product[\'priority_web_image\'])) {
            $image_name = $product[\'priority_web_image\'][\'filename\'];
            $data = $product[\'priority_web_image\'][\'data\'];
            $ext = substr($image_name, strpos($image_name, ".") + 1);
            if ($ext == \'jpg\') {
                $ext = \'jpeg\';
            }
            $mime_type = \'image/\'.$ext;
            $headers = [
                \'Authorization\' => \'Bearer \'.$result_auth->access_token,
                "cache-control" => "no-cache",
                "Content-Type"  =>  $mime_type,
                "Content-Disposition" => "attachement;filename=".$image_name,
              ];
            $body = [
                "source_url"  =>  $data,
                "slug"        =>  "image_test_pimcore",
                "status"      =>  "future",
                "title"       =>  $image_name,
                "media_type"  => "image",
                "mime_type"   =>  $mime_type
            ];
            $options = [
                "headers"      =>  $headers,
                "form_params"  =>  $body,
                
            ];
            $result = $this->WPApi->request("POST", "media", $options);
            $bodyAry = json_decode($result->getBody());
            //echo print_r($bodyAry);
            return $bodyAry;
        }
 我用狂饮来提出请求。
如果有人知道我错过了什么,我会接受:-)。
 
                    最合适的回答,由SO网友:Warshow 整理而成
                    我找到了解决办法!
      file_put_contents($filepath, base64_decode($data));
      // Make sure the image exist
      if (!file_exists($filepath)){return;}
      // Load the image
      $file = file_get_contents($filepath);
      // Get the filename
      $filename = $image_name? $image_name : basename($filepath);
      // Initiate curl.
      $ch = curl_init();
      curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt( $ch, CURLOPT_URL, $url .\'/wp-json/wp/v2/media/\' );
      curl_setopt( $ch, CURLOPT_POST, 1 );
      curl_setopt( $ch, CURLOPT_POSTFIELDS, $file );
      curl_setopt( $ch, CURLOPT_HTTPHEADER, [
          "Content-Disposition: form-data; filename=\\"$filename\\"",
          \'Authorization: Bearer \' .$result_auth->access_token,
      ] );
      $result = curl_exec( $ch );
      curl_close( $ch );
      // Decode the response
      $api_response = json_decode($result);
      return $api_response;