【问题标题】:Wordpress api post image raw data without being blank in media libraryWordpress api发布图像原始数据而不在媒体库中为空白
【发布时间】:2022-01-19 09:28:06
【问题描述】:

所以,为了解决问题的核心,我想使用 api (v2) 在 wopress 网站上发布一张图片。

问题的第一部分是 我没有 url 或文件路径,我只有 图像的原始数据 在我得到的变量中来自之前完成的导出。

问题的第二部分是一旦发布(正常情况下),图像在管理的媒体库中显示为空白

这是我的代码:

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;
        }

我使用 Guzzle 发出请求。

如果有人知道我缺少什么,我会接受它:-)。

【问题讨论】:

    标签: php image post command wordpress-rest-api


    【解决方案1】:

    我找到了解决办法!

          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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多