给定图像URL,我如何将该图像上传到Google Cloud Storage以使用Node.js进行图像处理?

最佳答案

这是一个2个步骤的过程:

  • 使用requestfetch在本地下载文件。
  • 使用官方library上传到GCL。
    var fs = require('fs');
    var gcloud = require('gcloud');
    
    // Authenticating on a per-API-basis. You don't need to do this if you auth on a
    // global basis (see Authentication section above).
    
    var gcs = gcloud.storage({
      projectId: 'my-project',
      keyFilename: '/path/to/keyfile.json'
    });
    
    // Create a new bucket.
    gcs.createBucket('my-new-bucket', function(err, bucket) {
      if (!err) {
        // "my-new-bucket" was successfully created.
      }
    });
    
    // Reference an existing bucket.
    var bucket = gcs.bucket('my-existing-bucket');
    var localReadStream = fs.createReadStream('/photos/zoo/zebra.jpg');
    var remoteWriteStream = bucket.file('zebra.jpg').createWriteStream();
    localReadStream.pipe(remoteWriteStream)
      .on('error', function(err) {})
      .on('finish', function() {
        // The file upload is complete.
      });
    

  • 如果要将文件另存为jpeg图像,则需要编辑remoteWriteStream流并添加自定义元数据:
    var image = bucket.file('zebra.jpg');
    localReadStream.pipe(image.createWriteStream({
        metadata: {
          contentType: 'image/jpeg',
          metadata: {
            custom: 'metadata'
          }
        }
    }))
    

    我在浏览documentation时发现了这个

    09-12 10:28