Как загрузить локальный файл под другим именем с помощью клиентской библиотеки узла?

#python #node.js #google-cloud-storage

#python #node.js #google-облачное хранилище

Вопрос:

Интерфейс клиентской библиотеки python в Google Cloud позволяет указать имя удаленного большого двоичного объекта (например, /my/file.txt -> gs://bucket/newName.txt ). Однако я не вижу способа сделать это в клиентской библиотеке узла.

У меня есть пример, работающий на python, но я полагался на возможность добавлять имена файлов на сервере хранения с меткой времени. Это создает проблему, поскольку (AFAIK) библиотека узла просто использует имя локального файла.

Пример Python — имеет имена источника / назначения

 def upload_blob(bucket_name, source_file_name, destination_blob_name):
    """Uploads a file to the bucket."""
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)

    blob.upload_from_filename(source_file_name)

    print('File {} uploaded to {}.'.format(
        source_file_name,
        destination_blob_name))
  

Пример узла — использует локальное имя файла

 // Uploads a local file to the bucket
await storage.bucket(bucketName).upload(filename, {
  // Support for HTTP requests made with `Accept-Encoding: gzip`
  gzip: true,
  metadata: {
    // Enable long-lived HTTP caching headers
    // Use only if the contents of the file will never change
    // (If the contents will change, use cacheControl: 'no-cache')
    cacheControl: 'public, max-age=31536000',
  },
});
  

Есть ли какой-либо способ указать, какое загружаемое имя файла используется в клиентской библиотеке узла?

Спасибо.

Ответ №1:

С помощью node SDK вы можете указать целевой файл в объекте options, который вы передаете в качестве второго объекта для загрузки. В документах API есть пример для upload() .

 storage.bucket(bucketName).upload(localFilePath, {
    destination: remoteFilePath
})
  

Комментарии:

1. Отлично, именно то, что я искал!