我正在通过csv将产品上传到Shopify。我在Google云端硬盘中有大量带有公共链接的图片,但他们正在创建错误。我猜两个问题。首先,我可以将此工作保存在云端硬盘中,如果是这样,您可以提供哪些资源来帮助我访问API以获取网址和文件名?其次,如果不是,托管图像并将图像URl和文件名导出到电子表格中的最佳流程/系统是什么,那么我可以添加到csv文件中吗?
答案 0 :(得分:0)
您没有指定要获得的错误类型,但是从外部源链接图像的一般方法是使用API。来自文档:
POST /admin/products/#{id}/images.json
{
"image": {
"src": "http://example.com/rails_logo.gif"
}
}
但Shopify不会从Google云端硬盘提供该图片。当图像通过src链接时,Shopify会将其上传并将其分发到Content-Delivery-Network。加载Google云端硬盘图片时,Shopify会尝试上传,但GD会发送至少一轮重定向,而Shopify将无法跟踪这些重定向。
你最好的选择是:加载图像; base64编码;使用API上传图片内容。下面的示例显示了如何使用Node.js
执行此操作var https = require('https');
var fs = require('fs');
var cred = new Buffer("APIKey:APIPassword").toString('base64');
var headers = {
Authorization: "Basic " + cred,
"Content-Type": "application/json"
};
var options = {
host: 'mystore.myshopify.com',
port: 443,
path: '/admin/products/1934429697/images.json',
method: 'POST',
headers: headers
};
function sendImageFS() {
// Setup the request. The options parameter is
// the object we defined above.
var req = https.request(options, function(res) {
res.setEncoding('utf-8');
var responseString = '';
res.on('data', function(data) {
responseString += data;
});
res.on('end', function() {
console.log(responseString);
var resultObject = JSON.parse(responseString);
});
});
req.on('error', function(e) {
// TODO: handle error.
console.log(e);
});
fs.readFile('C:\\Users\\Brett\\Desktop\\whitebird_500.jpg', function(err, data) {
var base64data = new Buffer(data).toString('base64');
var imagePayload = {
image: {
attachment: base64data,
filename: 'whitebird.jpg'
}
};
req.write(JSON.stringify(imagePayload));
req.end();
});
}
sendImageFS();