Hướng dẫn upload file to Google Drive với Node.js (Kèm video)

Nội dung bài viết

Video học lập trình mỗi ngày

Google Drive là một dịch vụ lưu trữ có sẵn cho người dùng Google và cho phép bạn lưu trữ tất cả các loại files. Google api cho phép developers thao tác với API để có thể tạo folders, upload file rất hữu ích như một số trường hợp làm dịch vụ lưu trữ.

Cách lấy API Credentials Google

Để thao tác được với API bạn phải có những tham số sau:

  • Cần Client Id và Client Secret
  • Cần redirect URI và refresh token

Do quá nhiều thao tác nên các bạn nên theo dõi video kèm theo để biết cách lấy và config dự án trên Google. Video đính kèm

Sau khi bạn có những thông tin cần thiết thì có thể code các thao tác dưới đây.

Upload file với Google Drive API và Nodejs

Dưới đây là toàn bộ code trong demo của video. Trong đó

  • setFilePublic chính là set link từ private thành public
  • uploadFile upload file từ local lên google drive
  • deleteFile Xóa file
require('dotenv').config();

const {google} = require('googleapis');
const fs = require('fs');
const path = require('path');

const CLIENT_ID = process.env.CLIENT_ID;
const CLIENT_SECRET = process.env.CLIENT_SECRET;
const REDIRECT_URI = process.env.REDIRECT_URI;
const REFRESH_TOKEN = process.env.REFRESH_TOKEN;


const oauth2Client = new google.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URI);
oauth2Client.setCredentials({refresh_token: REFRESH_TOKEN});

const drive = google.drive({
    version: 'v3',
    auth: oauth2Client
})

var that = module.exports = {
    setFilePublic: async(fileId) =>{
        try {
            await drive.permissions.create({
                fileId,
                requestBody: {
                    role: 'reader',
                    type: 'anyone'
                }
            })

            const getUrl = await drive.files.get({
                fileId,
                fields: 'webViewLink, webContentLink'
            })

            return getUrl;
        } catch (error) {
            console.error(error);
        }
    },
    uploadFile: async ({shared}) => {
        try {
            const createFile = await drive.files.create({
                requestBody: {
                    name: "iloveyou_cr7.jpg",
                    mimeType: 'image/jpg'
                },
                media: {
                    mimeType: 'image/jpg',
                    body: fs.createReadStream(path.join(__dirname, '/../cr7.jpg'))
                }
            })
            const fileId = createFile.data.id;
            console.log(createFile.data)
            const getUrl = await that.setFilePublic(fileId);

            console.log(getUrl.data);

        } catch (error) {
            console.error(error);
        }
    },
    deleteFile: async (fileId) => {
        try {
            console.log('Delete File:::', fileId);
            const deleteFile = await drive.files.delete({
                fileId: fileId
            })
            console.log(deleteFile.data, deleteFile.status)
        } catch (error) {
            console.error(error);
        }
    }
}

Tóm lại

Bạn nên xem video để hỗ trợ một cách tốt nhất.

Có thể bạn đã bị missing