Can you rename files in Google Cloud Storage?
I am letting users upload photos, but I want to give them the ability to edit the photo, at least by changing the name they uploaded it with. I am using Javascript through Node.js.
Thanks!
Can you rename files in Google Cloud Storage?
I am letting users upload photos, but I want to give them the ability to edit the photo, at least by changing the name they uploaded it with. I am using Javascript through Node.js.
Thanks!
Share Improve this question edited Aug 31, 2014 at 18:26 Misha Brukman 13.4k5 gold badges64 silver badges82 bronze badges asked Jul 17, 2014 at 19:12 user3826544user3826544 711 silver badge4 bronze badges 2- 1 Which API are you using? You'll want to do a copy followed by a delete. – jterrace Commented Jul 17, 2014 at 20:37
- i'm using cloud-storage and gcloud, neither of which support copying or moving files – user3826544 Commented Jul 18, 2014 at 14:36
4 Answers
Reset to default 3This mand:
gsutil mv gs://my_bucket/olddir gs://my_bucket/newdir
will do the job. If you have a large number of files you need to do a multi-processing move, so use this mand:
gsutil -m mv gs://my_bucket/olddir gs://my_bucket/newdir
You can find this information in the docs.
You can rename a file using the storage.move() method.
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const oldFileName = 'path/to/old_file.jpg';
const newFileName = 'path/to/new_file.jpg';
storage
.bucket(bucketName)
.file(oldFileName)
.move(newFileName)
.then(() => {
console.log(`File ${oldFileName} was renamed to ${newFileName}.`);
})
.catch(err => {
console.error('Error renaming file:', err);
});
bucketName
is the name of the bucket where the file is located.
oldFileName
is the current name of the file.
newFileName
is the new name that you want to give the file.
You should have the proper permissions.
Yes. You copy it to a new name with the mv
mand. Below renames file.html
to file
.
gsutil mv gs://xxxx/folder/file.html gs://xxxx/folder/file
For more information see Google's gsutil documentation at mv - Move/rename objects.
Here is Python function performs a multi-threaded/multi-processing move:
from subprocess import call, CalledProcessError
def rename_object(self, old_dir, new_dir):
base_cmd = ["gsutil", "-m", "mv"]
old_path = "gs://{}".format(old_dir)
new_path = "gs://{}".format(new_dir)
cmd = base_cmd + [old_path, new_path]
try:
call(cmd)
except CalledProcessError as e:
print e