图像服务器 - 创建URL和文件名列表

时间:2016-01-03 00:08:01

标签: csv google-drive-api shopify

我正在通过csv将产品上传到Shopify。我在Google云端硬盘中有大量带有公共链接的图片,但他们正在创建错误。我猜两个问题。首先,我可以将此工作保存在云端硬盘中,如果是这样,您可以提供哪些资源来帮助我访问API以获取网址和文件名?其次,如果不是,托管图像并将图像URl和文件名导出到电子表格中的最佳流程/系统是什么,那么我可以添加到csv文件中吗?

1 个答案:

答案 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();