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 publicuploadFile
upload file từ local lên google drivedeleteFile
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.