Move/rename folder in Google Cloud Storage using nodejs gcloud api

廉价感情. 提交于 2020-08-19 07:06:21

问题


I am trying to rename or move a folder in google cloud storage using the gcloud api.

A similar question explains how to delete a folder: Delete folder in Google Cloud Storage using nodejs gcloud api

But how can one rename a folder? or move to another path?


回答1:


You can try something like this:

'use strict'

var async = require('async')
var storage = require('@google-cloud/storage')()
var bucket = storage.bucket('stephen-has-a-new-bucket')

bucket.renameFolder = function(source, dest, callback) {
  bucket.getFiles({ prefix: source }, function(err, files) {
    if (err) return callback(err)

    async.eachLimit(files, 5, function(file, next) {
      file.move(file.name.replace(source, dest), next)
    }, callback)
  })
}

bucket.renameFolder('photos/cats', 'photos/dogs', console.log)



回答2:


There are no folders. There is simply a collection of objects that all happen to have the same key prefix, for example photos/animals/cat.png and photos/animals/dog.png both have a common prefix photos/animals/ and that's what makes them appear to be in the same folder.

You will need to copy (or move) each of the objects to its new key, for example move photos/animals/cat.png to photos/pets/cat.png and move photos/animals/dog.png to photos/pets/dog.png.

That said, Google Cloud provides a way to do this from the command line using gsutil mv.



来源:https://stackoverflow.com/questions/41075100/move-rename-folder-in-google-cloud-storage-using-nodejs-gcloud-api

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!