2016-09-12 10 views
2

商品の組み合わせで画像をマッピングしたい。 以下のコードは正常に画像を追加できますが、返信結果に画像IDを与えていません。prestashop webserviceで画像IDを取得する方法

コード:

$img_path = DIR_PATH_CONFIG.'/'.$this->filename.'_images/'. $imagename; 
     //image will be associated with product id 4 
     $url = PS_SHOP_PATH. '/api/images/products/'.$id_product; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_POST, true); 
     //curl_setopt($ch, CURLOPT_PUT, true); To edit a picture 
     curl_setopt($ch, CURLOPT_USERPWD, PS_WS_AUTH_KEY.':'); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, array('image'=>"@".$img_path.";type=image/jpeg")); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     if($result === false) 
     { 
     $var = false; 
     echo "<br><br>Error : ".curl_error($result)."<br>"; } 
     else 
     { 
     echo '<br><br> Image added'; 
     //$xml = simplexml_load_string($result); 
     //$imageId = $xml->image->id; 
     unlink($img_path); 
     $var = true; 
     } 

アイデアを有する任意の一つが私に教えてくださいでき..?

答えて

0

画像がない製品に画像を追加します(/ api/images/products/{ID}にはエントリがありません)。キーは、イメージのバイナリをPS WSに返すだけでなく、新しいCurlFileを作成することです。あなたは、次の機能を使用することができます。

/** 
 
* Function that creates a new Product Feature Value and returns its newly created id 
 
* @param product_id = the id of the product for which the image should be uploaded 
 
* @param image_name = the String containing the name of the downloaded image (which will be found in /img) 
 
* @return the ID of the newly inserted image 
 
*/ 
 
function addNewImage($product_id, $image_name ) { 
 
    $url = PS_SHOP_PATH . '/api/images/products/' . $product_id; 
 
    $image_path = 'img/'. $image_name; 
 
    $key = PS_WS_AUTH_KEY; 
 

 
    $ch = curl_init(); 
 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:multipart/form-data','Expect:')); 
 
    curl_setopt($ch, CURLOPT_URL, $url); 
 
    curl_setopt($ch, CURLOPT_POST, true); 
 
    curl_setopt($ch, CURLOPT_USERPWD, $key.':'); 
 
    curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => new CurlFile($image_path))); 
 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 

 
    $result = curl_exec($ch); 
 
    curl_close($ch); 
 

 
    return $result; 
 
}

関連する問題