Spaces:
Build error
Build error
File size: 2,136 Bytes
87afa45 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
const express = require('express');
const multer = require('multer');
const { google } = require('googleapis');
const fs = require('fs');
const path = require('path');
const app = express();
// Konfigurasi multer untuk menangani upload file
const upload = multer({ dest: 'uploads/' });
// Setup Google Drive API credentials
const CLIENT_ID = process.env.GOOGLE_DRIVE_CLIENT_ID;
const CLIENT_SECRET = process.env.GOOGLE_DRIVE_CLIENT_SECRET;
const REFRESH_TOKEN = process.env.GOOGLE_DRIVE_REFRESH_TOKEN;
const FOLDER_ID = process.env.GOOGLE_DRIVE_FOLDER_ID;
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
"https://developers.google.com/oauthplayground" // Redirect URL (tidak digunakan)
);
oauth2Client.setCredentials({
refresh_token: REFRESH_TOKEN,
});
const drive = google.drive({
version: 'v3',
auth: oauth2Client,
});
// Function to upload file to Google Drive
async function uploadFileToGoogleDrive(file) {
try {
const fileMetadata = {
'name': file.originalname,
'parents': [FOLDER_ID], // Folder ID tempat file akan disimpan
};
const media = {
mimeType: file.mimetype,
body: fs.createReadStream(file.path),
};
const response = await drive.files.create({
resource: fileMetadata,
media: media,
fields: 'id',
});
return response.data.id;
} catch (error) {
throw new Error('Gagal mengunggah ke Google Drive: ' + error.message);
}
}
// Endpoint untuk upload file
app.post('/upload', upload.single('file'), async (req, res) => {
try {
if (!req.file) {
return res.status(400).send('No file uploaded.');
}
const fileId = await uploadFileToGoogleDrive(req.file);
// Hapus file lokal setelah diunggah ke Google Drive
fs.unlinkSync(req.file.path);
res.json({
message: 'File uploaded successfully to Google Drive!',
fileId: fileId,
});
} catch (error) {
res.status(500).send('Error uploading file: ' + error.message);
}
});
// Start server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
|