كيفية تحميل الملفات على Google Drive باستخدام حساب الخدمة

سيرشدك هذا الدليل خطوة بخطوة حول كيفية تحميل الملفات إلى Google Drive باستخدام حساب الخدمة Node.js
. في هذا المثال، لدينا مجلد على محرك الأقراص الثابتة المحلي الخاص بك يحتوي على ملفات متعددة ويُطلب منا تحميل هذه الملفات إلى مجلد معين في Google Drive.
1. قم بإنشاء مشروع Google Cloud
اذهب الى cloud.google.com
وإنشاء مشروع Google Cloud جديد. قم بتسمية مشروعك، وقم بتغيير معرف المشروع وانقر فوق Create
زر.
2. تمكين واجهات برمجة تطبيقات Google
يختار APIs & Services
من القائمة اليسرى ثم اضغط على Enable APIs and Services
لتمكين واجهات برمجة تطبيقات Google المختلفة. إذا كنت تخطط لتحميل الملفات إلى Google Drive، فستحتاج إلى تمكين Drive API. إذا كنت ترغب في استخدام Google Cloud Storage API، فستحتاج إلى تمكين Storage API.
3. إنشاء حساب الخدمة
في APIs & Services
القسم، انقر على Credentials
وانقر على Create credentials
لإنشاء حساب الخدمة.
3 أ. وصف حساب الخدمة
قم بتسمية حساب الخدمة الخاص بك ومعرف حساب الخدمة. يشبه هذا عنوان البريد الإلكتروني وسيتم استخدامه لتحديد حساب الخدمة الخاص بك في المستقبل. انقر Done
للانتهاء من إنشاء حساب الخدمة.
3ب. إنشاء ملف مفتاح
في Cloud Console، انتقل إلى IAM and Admin > صفحة حسابات الخدمة. انقر فوق عنوان البريد الإلكتروني لحساب الخدمة الذي تريد إنشاء مفتاح له. انقر فوق Keys
فاتورة غير مدفوعة. انقر فوق Add key
القائمة المنسدلة، ثم اختر Create new key
.
يختار JSON
كنوع المفتاح ثم انقر فوق إنشاء. سيؤدي هذا إلى تنزيل ملف JSON الذي سيحتوي على مفتاحك الخاص. لا تقم بإلزام هذا الملف بمستودع Github.
4. مشاركة مجلد Drive
في هذا المثال، نتطلع إلى تحميل الملفات من مجلد محلي إلى مجلد محدد في Google Drive.
انتقل إلى Google Drive الخاص بك وقم بإنشاء مجلد جديد. انقر بزر الماوس الأيمن فوق المجلد، واختر مشاركة وأضف عنوان البريد الإلكتروني لحساب الخدمة الذي قمت بإنشائه في الخطوة 3 كمحرر لهذا المجلد.
وبالتالي سيتمكن تطبيق Node.js الخاص بك من الوصول إلى هذا المجلد وتحميل الملفات إليه. لن يتمكن التطبيق من الوصول إلى أي موارد أخرى على Google Drive الخاص بك.
نصيحة: إذا كنت تعمل مع Google Calendar API، فيمكنك أيضًا مشاركة تقويم Google مع حساب الخدمة لتتمكن من الوصول للقراءة والكتابة إلى أحداث التقويم.
5. قم بتكوين تطبيق Node.js
الآن بعد أن تم إعداد حساب الخدمة، نحتاج إلى إعداد تطبيق Node.js الذي سيقوم بتحميل الملفات إلى Google Drive. سنقوم بتشغيل هذا التطبيق من سطر الأوامر ولكن يمكنك أيضًا تحويله إلى تطبيق ويب باستخدام Google Cloud Run وDocker.
5 أ. قم بإنشاء عميل OAuth2 معتمد
يستبدل service.json
باسم ملف مفتاح حساب الخدمة الذي قمت بإنشائه في الخطوة 3ب.
// service.js
const { google } = require('googleapis');
const path = require('path');
const getDriveService = () => {
const KEYFILEPATH = path.join(__dirname, 'service.json');
const SCOPES = ['https://www.googleapis.com/auth/drive'];
const auth = new google.auth.GoogleAuth({
keyFile: KEYFILEPATH,
scopes: SCOPES
});
const driveService = google.drive({ version: 'v3', auth });
return driveService;
};
module.exports = getDriveService;
5ب. كتابة رافع الملفات
استبدل المجلد الأصلي بمعرف المجلد الخاص بمجلد Google Drive الذي تريد التحميل إليه. بعد تحميل الملف، سنقوم بنقل الملف المحلي إلى سلة المهملات أيضًا.
// upload.js
const fs = require('fs');
const getInvoiceFolder = require('./folder');
const drive = require('./service');
const uploadSingleFile = async (fileName, filePath) => {
const folderId = 'DRIVE_FOLDER_ID';
const { data: { id, name } = {} } = await drive.files.create({
resource: {
name: fileName,
parents: [folderId]
},
media: {
mimeType: 'application/pdf',
body: fs.createReadStream(filePath)
},
fields: 'id,name'
});
console.log('File Uploaded', name, id);
};
const scanFolderForFiles = async (folderPath) => {
const folder = await fs.promises.opendir(folderPath);
for await (const dirent of folder) {
if (dirent.isFile() && dirent.name.endsWith('.pdf')) {
await uploadSingleFile(dirent.name, path.join(folderPath, dirent.name));
await fs.promises.rm(filePath);
}
}
};
module.exports = scanFolderForFiles;
6. قم بتشغيل برنامج تحميل الملفات
الآن بعد أن تم إعداد كل شيء، قم بإنشاء index.js
ملف وتشغيل node index.js
أمر لتحميل الملفات على Google Drive.
// index.js
const scanFolderForFiles = require('./scan');
scanFolderForFiles('local-folder').then(() => {
console.log('🔥 All files have been uploaded to Google Drive successfully!');
});
قد تفكر في استخدام
https://www.googleapis.com/auth/drive.file
نطاق بدلا من أوسع من ذلك بكثيرhttps://www.googleapis.com/auth/drive
نِطَاق. في هذه الحالة، يجب أيضًا إنشاء المجلد الأصلي الأولي باستخدام نفس التطبيق، وإلا فلن يكون لديه إذن بالكتابة إلى المجلد.
اكتشاف المزيد من مرابع التكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.