How to upload file to Google cloud storage using reactjs?

Uploading Files to Google Cloud Storage using ReactJS

Introduction

In this article, we will explore how to upload files to Google Cloud Storage using ReactJS. Google Cloud Storage is a cloud-based object storage service that allows users to store and manage large amounts of data. With ReactJS, we can create a web application that allows users to upload files to Google Cloud Storage.

Prerequisites

Before we begin, make sure you have the following prerequisites:

  • A Google Cloud account
  • A Google Cloud Storage account
  • A ReactJS project set up
  • Node.js installed on your machine

Step 1: Set up Google Cloud Storage

To upload files to Google Cloud Storage, you need to set up a Google Cloud Storage account. Here’s how:

  • Go to the Google Cloud Console and create a new project.
  • Click on "Select a project" and then click on "New Project".
  • Enter a project name and click on "Create".

Step 2: Set up Google Cloud Storage credentials

To upload files to Google Cloud Storage, you need to set up credentials for your project. Here’s how:

  • Go to the Google Cloud Console and navigate to "IAM & Admin" > "Service accounts".
  • Click on "Create service account" and then click on "Create key".
  • Choose "JSON key file" and then click on "Create".
  • Download the JSON key file and save it to a secure location.

Step 3: Install required packages

To upload files to Google Cloud Storage using ReactJS, you need to install the following packages:

  • google-cloud-storage: This package provides a client library for Google Cloud Storage.
  • axios: This package provides a promise-based HTTP client for making HTTP requests.

You can install these packages using npm or yarn:

npm install google-cloud-storage axios

or

yarn add google-cloud-storage axios

Step 4: Create a ReactJS component to upload files

Here’s an example of a ReactJS component that uploads files to Google Cloud Storage:

import React, { useState } from 'react';
import axios from 'axios';

const UploadFilesToGoogleCloudStorage = () => {
const [file, setFile] = useState(null);
const [uploading, setUploading] = useState(false);
const [error, setError] = useState(null);

const handleFileChange = (event) => {
setFile(event.target.files[0]);
};

const handleUpload = () => {
setUploading(true);
const formData = new FormData();
formData.append('file', file);

axios.post('https://storage.googleapis.com/cloud-storage/upload', formData)
.then((response) => {
if (response.status === 201) {
console.log('File uploaded successfully');
} else {
setError(response.data.error);
}
})
.catch((error) => {
setError(error.message);
})
.finally(() => {
setUploading(false);
});
};

return (
<div>
<h1>Upload Files to Google Cloud Storage</h1>
<input type="file" onChange={handleFileChange} />
<button onClick={handleUpload}>Upload</button>
{uploading ? (
<p>Uploading...</p>
) : error ? (
<p>Error: {error}</p>
) : (
<p>File uploaded successfully!</p>
)}
</div>
);
};

export default UploadFilesToGoogleCloudStorage;

Step 5: Create a ReactJS component to display uploaded files

Here’s an example of a ReactJS component that displays uploaded files:

import React from 'react';
import axios from 'axios';

const DisplayUploadedFiles = () => {
const [files, setFiles] = useState([]);

const handleFileChange = (event) => {
setFiles(event.target.files);
};

const handleDownload = (file) => {
const formData = new FormData();
formData.append('file', file);

axios.post('https://storage.googleapis.com/cloud-storage/download', formData)
.then((response) => {
const blob = new Blob(response.data, { type: response.headers['content-type'] });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = file.name;
a.click();
})
.catch((error) => {
console.error(error);
});
};

return (
<div>
<h1>Uploaded Files</h1>
<ul>
{files.map((file) => (
<li key={file.name}>
<a href={URL.createObjectURL(file)} download={file.name}>
{file.name}
</a>
</li>
))}
</ul>
</div>
);
};

export default DisplayUploadedFiles;

Step 6: Create a ReactJS component to display uploaded files in Google Cloud Storage

Here’s an example of a ReactJS component that displays uploaded files in Google Cloud Storage:

import React from 'react';
import axios from 'axios';
import { GoogleCloudStorage } from 'google-cloud-storage';

const GoogleCloudStorageComponent = () => {
const [files, setFiles] = useState([]);

const handleFileChange = (event) => {
setFiles(event.target.files);
};

const handleDownload = (file) => {
const formData = new FormData();
formData.append('file', file);

axios.post('https://storage.googleapis.com/cloud-storage/download', formData)
.then((response) => {
const blob = new Blob(response.data, { type: response.headers['content-type'] });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = file.name;
a.click();
})
.catch((error) => {
console.error(error);
});
};

const uploadFilesToGoogleCloudStorage = () => {
const storage = new GoogleCloudStorage({
projectId: 'your-project-id',
credentials: {
type: 'service_account',
client_email: 'your-client-email',
private_key_id: 'your-private-key-id',
private_key: 'your-private-key',
client_id: 'your-client-id',
},
});

const files = files.map((file) => {
return {
name: file.name,
url: file.url,
type: file.type,
};
});

const upload = storage.bucket('your-bucket-name').upload(files);

console.log(upload);
};

return (
<div>
<h1>Upload Files to Google Cloud Storage</h1>
<button onClick={uploadFilesToGoogleCloudStorage}>Upload Files</button>
<ul>
{files.map((file) => (
<li key={file.name}>
<a href={file.url} download={file.name}>
{file.name}
</a>
</li>
))}
</ul>
</div>
);
};

export default GoogleCloudStorageComponent;

Conclusion

In this article, we have explored how to upload files to Google Cloud Storage using ReactJS. We have set up a Google Cloud account, set up credentials for our project, installed the required packages, created a ReactJS component to upload files, created a ReactJS component to display uploaded files, and created a ReactJS component to display uploaded files in Google Cloud Storage. We have also provided a step-by-step guide to uploading files to Google Cloud Storage using ReactJS.

Significant Content

  • Setting up Google Cloud Storage credentials
  • Installing required packages
  • Creating a ReactJS component to upload files
  • Creating a ReactJS component to display uploaded files
  • Creating a ReactJS component to display uploaded files in Google Cloud Storage

Table

Component Description
UploadFilesToGoogleCloudStorage Uploads files to Google Cloud Storage using ReactJS
DisplayUploadedFiles Displays uploaded files in Google Cloud Storage using ReactJS
GoogleCloudStorageComponent Displays uploaded files in Google Cloud Storage using ReactJS

Note: This is a basic example and may not cover all the features and edge cases of uploading files to Google Cloud Storage using ReactJS.

Unlock the Future: Watch Our Essential Tech Videos!


Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top