我正在尝试通过使用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);
}
?>
答案 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
)
)
)
);