Как загрузить / сохранить изображение / файл в корзине Google Cloud Storage, просто отправив URL-адрес изображения с помощью клиента npm GCS? - PullRequest
0 голосов
/ 17 декабря 2018

После поиска в Google я обнаружил, что в клиенте npm GCS еще нет функции.я обнаружил, что достигну этого, запустив один экземпляр, который будет иметь одну службу загрузки изображений, и он будет загружать туда изображения для временной цели и загружать их в корзину GCS.в этой ситуации я должен заплатить дополнительные четыре платы, такие как запуск экземпляра, загрузка полосы пропускания (temp) изображения, а также передача / сохранение изображения в корзину GCS.?

Также найди одно решение https://cloudinary.com/documentation/fetch_remote_images cloudinary - это именно то, что я ищу.

Мне интересно знать, можно ли добиться такого же результата, используя ведро GCS,если да то расскажите пожалуйста как?

Я ищу идеальный способ.

1 Ответ

0 голосов
/ 17 декабря 2018

Предполагая, что вы хотите использовать с помощью клиентских библиотек Google Cloud, я загрузил изображение с внешнего URL-адреса, используя Node.JS v8.9.4 и npm версии 5.6.0 ведро, используя этот код:

const {Storage} = require('@google-cloud/storage'),
      request = require('request'),
      bucket = 'BUCKET_NAME',
      filename = 'FILE_NAME',
      url = 'IMAGE_URL',           
      storage = new Storage({
        projectId: 'PROJECT_ID',
        keyFilename: 'auth.json'
      });   

var file = storage.bucket(bucket).file(filename);

request({url: url, encoding: null}, function(err, response, buffer) {

  var stream = file.createWriteStream({
    metadata: {
      contentType: response.headers['content-type']
    }
  });

  stream.end(buffer);
});

Убедитесь, что вы установили PROJECT_ID, BUCKET_NAME, FILE_NAME и IMAGE_URL;а также наличие в локальном каталоге файла ключа JSON служебной учетной записи .

Содержимое файла package.json:

{
 "dependencies": {
  "@google-cloud/storage": "^2.3.3"
 }
}

Запустите код с помощью npm start server.js.

Если вы хотите получить Подписанный URL для этого файла, добавьте следующий дополнительный код, который я нашел в документации :

// These options will allow temporary read access to the file
const options = {
  action: 'read',
  expires: '03-17-2025',
};

storage
  .bucket(bucket)
  .file(filename)
  .getSignedUrl(options)
  .then(results => {
    const signed_url = results[0];

    console.log(`The signed URL for ${filename} is ${signed_url}`);
  })
  .catch(err => {
    console.error('ERROR:', err);
  });

Не забудьте установить дату истечения на фактическую дату истечения срока, в которой вы заинтересованы, изменив значение expires.

...