通过PHP API将产品图像上传到Shopify

时间:2014-07-21 15:56:51

标签: php shopify

我正在尝试通过使用OhShopify PHP库分叉将Base64映像发布到API来将产品图像上传到Shopify。

我有其他代码可以成功创建产品,但下面的代码片段返回NULL,我无法确定原因。

此代码似乎成功运行并使其成为'并创建一个新的ShopifyClient对象,但$ response [' src']上的var_dump返回NULL,图像永远不会成功。我错过了什么吗?

<?php

define('SHOPIFY_API_KEY', 'abc');
define('SHOPIFY_SECRET', '123');
define('SHOPIFY_SCOPE', 'write_content,write_products,write_orders');

include_once('lib/ohShopify/shopify.php');

// Check for shopify authentication
if (isset($_SESSION['shop']) && isset($_SESSION['token'])){

    $shopifyClient = new ShopifyClient($_SESSION['shop'], $_SESSION['token'], SHOPIFY_API_KEY, SHOPIFY_SECRET); 
    echo 'made it';

} else{
    echo 'token and shop not set up';
}


$testBase64 = "loooooooooooooong string of text";

try {
    $theImages = array
    (
        "image"=>array
        (
            "position" =>    1,
            "attachment" =>  $testBase64
        )
    );

    $response = $shopifyClient->call('POST', '/admin/products/#326021139/images.json', $theImages);

    var_dump($response['src']);

} catch (ShopifyApiException $ex) {
    var_dump($ex);
}
?>

3 个答案:

答案 0 :(得分:0)

Stack Overflow受到所有路过狂热者投票帖/问题的影响而没有声明他们的原因。如果你有理由,那么请说服而不是成为一个匿名的懦夫。

对于那些有相同问题或疑问的人,我最终无法让这个工作,但想出了一个解决方案,我最初会采用base64编码的图像,将其保存为服务器上的文件,然后传递的URL将文件发送到产品创建API调用。

本质:

file_put_contents( 'img_uploads/'.$filename, base64_decode($encoded_img) );
...
try {
    // Create a new product
    $product = array
    (
        "product"=>array
        (
            "title"=>$title,
            "body_html"=>$body_html,
            "vendor"=>$vendor,
            "product_type"=>$productType,
            "variants"=>array ("price"=>$price),
            "images"=>array ("src"=>$image)
        )
    );
    $response = $shopifyClient->call('POST', '/admin/products.json', $product);

答案 1 :(得分:0)

图像数组是 1 个数组:

$image = file_get_contents("图片/test.jpg"); $base64 = base64_encode($image);

    $products_array = array
    (
        'product' => array
        (
            'title' => $_POST['title'],
            'body_html' => $_POST['body_html'],
            'vendor' => $_POST['vendor'],
            'product_type' => $_POST['type'],
            'images' => array(
                            array(
                            'filename' => 'test.jpg',
                            'attachment' => $base64
                            )
                        )
        )
    ); 

答案 2 :(得分:0)

如果您对图像进行 base64 编码,则它也适用于本地文件。 你唯一做错的是图像中的额外数组:

  $image = file_get_contents("Images/test.jpg");
  $base64 = base64_encode($image);
  $products_array = array
  (
    'product' => array
  (
    'title' => $_POST['title'],
    'body_html' => $_POST['body_html'],
    'vendor' => $_POST['vendor'],
    'product_type' => $_POST['type'],
    'images' => array(
        array(
        'filename' => 'test.jpg',
          'attachment' => $base64
      )
    )
  )
);