Step By Step Process – Upload Files In Google Cloud Storage(Node.js)
Step 1: Get the Credential File And Give Access To Storage Communication
- Go to Google Cloud Console.
- First, if you don’t have any project active on the Google Cloud Platform, you must create a project with some name.
- Enable the IAM API.
- Go to the Service Account tab of IAM & Admin
- Click on Creating New Service Account
- Give the service account details with name and service account ID automatically created.
- Grant this service account access to the project. Search for Cloud Storage and give access to Full management of Cloud Storage for Firebase.
- You can ignore any other user’s access to the service account and get things done. Here your service account is ready to use.
- Go to the Keys tab of the service account and click on Add key with JSON format then you will get the JSON key for your service account. It’s ready to use. Just include it in the base dir of your project folder.
Step 2: JSON For Your Service Account
- It something look like this “service-account.json”. It contains JSON data like below:
{
"type": "service_account",
"project_id": "projectname",
"private_key_id": "randomalphanumericid",
"private_key": "-----BEGIN PRIVATE KEY-----\nsomethingbigalphanumerickey\n-----END PRIVATE KEY-----\n",
"client_email": "someaccount-firebase@someaccount.iam.gserviceaccount.com",
"client_id": "somerandomnumber",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/someaccount-firebase@someaccount.iam.gserviceaccount.com"
}
Step 3: Create A Bucket
- Navigate to again Google Cloud Console
- Go to the Cloud Storage tab of GCP with the bucket list.
- Inside Buckets click on Create New Bucket. Give the bucket a name and continue.
- Choose your region to store the bucket data and also choose the storage class for the data.
- Choose how to control access to the objects where Uncheck the public access prevention for the project and provide access for fine-grained.
- Choose how to protect object data and then continue to create for the bucket by clicking create button.
Step 4: Give Access To The The Service Account
- Go inside the permission tab of the bucket.
- Inside the permission tab, Click on Grant Access.
- From the JSON file take the client_email and paste it on add principals, also choose the role as Storage Object Admin to create, read and write to the bucket.
- Finally, you are ready to upload files from your code.
Step 4: Nodejs Setup
- Install the “@google-cloud/storage” npm package. Require it and use it on your code.
const { Storage } = require("@google-cloud/storage");
const storage = new Storage({
projectId: "projectname",
keyFilename: "service-account.json",
});
Step 5: GCP Storage Setup And Related Code
Create a bucket in cloud storage before calling the upload() function. Upload to the Google Cloud storage using the simple “.upload()” function having the proper file path and destination path mentioned.
const uploadToFirebaseStorage = async (filepath, fileName) => {
try {
const gcs = storage.bucket("bucket_name"); // Removed "gs://" from the bucket name
const storagepath = `storage_folder/${fileName}`;
const result = await gcs.upload(filepath, {
destination: storagepath,
predefinedAcl: 'publicRead', // Set the file to be publicly readable
metadata: {
contentType: "application/plain", // Adjust the content type as needed
}
});
return result[0].metadata.mediaLink;
} catch (error) {
console.log(error);
throw new Error(error.message);
}
}
Step 6: Upload The File
- Call the uploadtoStorage() function by passing the file path and name of the file.
let result= await uploadToFirebaseStorage(`${uploadfilepath}`, 'filename.txt');
console.log(result);
You will get the link which looks like below providing access to the file.
"https://storage.googleapis.com/download/storage/v1/b/bucket_name/o/storage_folder%2Ffilename.txt?generation=1685355700228424&alt=media"
Upload Files To Google Cloud Storage In Node.js
+When there is some requirement for storing files, we need to store the data in some reliable place to access and retrieve it when needed. That’s where Google Storage comes into place which provides a secure and reliable place to store our files with ease. Also, the use of Node.js makes it super easy to handle the file operations.