1
votes

I've adapted the phpish/shopify API client (https://github.com/phpish/shopify) to create a simple web form where clients can add products and upload product images to my Shopify store.

I can get the products to add, no problem, but the images just won't upload. I'm using the API to create a new product with the default variant and a base64 encoded image, such as the example below.

Can any body spot what I'm doing wrong?

try
{
    $product = $shopify('POST /admin/products.json', array(), array
    (
        'product' => array
        (
            "title" => "Test Product 2" ,
            "body_html" => "test description" ,
            "vendor" => "URG Trial",
            "variants" => array
            (
                array
                (
                    "price" => "2.50",
                    "sku" => "25",
                                                "weight" => "2",
                                                "weight_unit" => "lb"
                )
            ),
            "images" => array
            (
                                    "attachment" => "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\n"
            ),
        )
    ));

}
2

2 Answers

1
votes

you forgot that images is one array of arrays, try this for images:

"images" => array(
    array(
        "attachment" => "your_image_base_64"
    )
)
0
votes

Thanks! The image could not be a local file and the array I also forgot but it works!

    $image="https://previews.123rf.com/images/victoroancea/victoroancea1201/victoroancea120100059/12055848-tv-color-test-pattern-test-card-for-pal-and-ntsc.jpg";

    $products_array = array
    (
        'product' => array
        (
            'title' => $_POST['title'],
            'body_html' => $_POST['body_html'],
            'vendor' => $_POST['vendor'],
            'product_type' => $_POST['type'],
            'images' => array(
                            array(
                            'src' => $image
                            )
                        )
        )
    );