فضای ذخیره سازی ابری را با توابع ابری گسترش دهید


می‌توانید عملکردی را در پاسخ به آپلود، به‌روزرسانی یا حذف فایل‌ها و پوشه‌ها در Cloud Storage فعال کنید.

نمونه‌های موجود در این صفحه بر اساس یک تابع نمونه است که هنگام آپلود فایل‌های تصویری در Cloud Storage فعال می‌شود. این تابع نمونه نحوه دسترسی به ویژگی‌های رویداد، نحوه بارگیری یک فایل در نمونه Cloud Functions و دیگر اصول مدیریت رویدادهای Cloud Storage را نشان می‌دهد.

برای مثال‌های بیشتر از موارد استفاده، ببینید با Cloud Functions چه کاری می‌توانم انجام دهم؟

عملکردی را در تغییرات Cloud Storage فعال کنید

از functions.storage برای ایجاد تابعی استفاده کنید که رویدادهای Cloud Storage را مدیریت کند. بسته به این که آیا می خواهید عملکرد خود را به یک سطل Cloud Storage خاص اختصاص دهید یا از سطل پیش فرض استفاده کنید، از یکی از موارد زیر استفاده کنید:

به عنوان مثال، نمونه مولد تصاویر کوچک به سطل پیش‌فرض پروژه اختصاص دارد:

exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => {
  // ...
});

Cloud Storage از این رویدادها پشتیبانی می کند:

  • onArchive فقط زمانی ارسال می‌شود که یک سطل نسخه‌سازی شی را فعال کرده باشد. این رویداد نشان می دهد که نسخه زنده یک شی به یک نسخه بایگانی شده تبدیل شده است، یا به این دلیل که بایگانی شده است یا به این دلیل که با آپلود یک شی به همین نام رونویسی شده است.
  • onDelete زمانی ارسال شد که یک شی به طور دائم حذف شد. این شامل اشیایی است که به عنوان بخشی از پیکربندی چرخه حیات سطل بازنویسی شده یا حذف شده اند. برای سطل‌هایی که نسخه‌بندی شی فعال است، هنگامی که یک شی بایگانی می‌شود، این مورد ارسال نمی‌شود (به onArchive مراجعه کنید)، حتی اگر بایگانی‌سازی از طریق روش storage.objects.delete انجام شود.
  • onFinalize ارسال زمانی که یک شی جدید (یا یک نسل جدید از یک شی موجود) با موفقیت در سطل ایجاد شود. این شامل کپی یا بازنویسی یک شی موجود است. آپلود ناموفق این رویداد را راه اندازی نمی کند.
  • onMetadataUpdate زمانی ارسال می شود که ابرداده یک شی موجود تغییر کند.

همانطور که در بالا برای onFinalize نشان داده شده است، رویداد را در کنترل کننده رویداد on تنظیم کنید.

دسترسی به ویژگی‌های شیء Cloud Storage

Cloud Functions تعدادی از ویژگی های شی Cloud Storage مانند size و contentType برای فایل به روز شده در معرض نمایش می گذارد. هرگاه تغییری در ابرداده شیء ایجاد شود، ویژگی 'metageneration' افزایش می یابد. برای اشیاء جدید، مقدار metageneration 1 است.

const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.

نمونه تولید تصویر بندانگشتی از برخی از این ویژگی ها برای تشخیص موارد خروجی استفاده می کند که در آن تابع برمی گردد:

// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
  return functions.logger.log('This is not an image.');
}

// Get the file name.
const fileName = path.basename(filePath);
// Exit if the image is already a thumbnail.
if (fileName.startsWith('thumb_')) {
  return functions.logger.log('Already a Thumbnail.');
}

یک فایل را دانلود، تبدیل و آپلود کنید

در برخی موارد، ممکن است نیازی به دانلود فایل‌ها از Cloud Storage نباشد. با این حال، برای انجام کارهای فشرده مانند تولید یک تصویر کوچک از یک فایل ذخیره شده در Cloud Storage ، باید فایل‌ها را در نمونه توابع دانلود کنید، یعنی ماشین مجازی که کد شما را اجرا می‌کند.

برای دانلود و آپلود آسان اشیا در Cloud Storage ، بسته Google Cloud Storage را با استفاده از npm install --save @google-cloud/storage نصب کنید و آن را وارد کنید. برای استفاده از جاوا اسکریپت برای مدیریت فرآیندهای خارجی مانند وظایف پردازش تصویر کوچک در نمونه، child-process-promise نیز وارد کنید:

const functions = require('firebase-functions/v1');
const admin = require('firebase-admin');
admin.initializeApp()
const path = require('path');

//library for resizing images
const sharp = require('sharp');

از gcs.bucket.file(filePath).download برای دانلود یک فایل در پوشه موقت در نمونه Cloud Functions خود استفاده کنید. در این مکان، می‌توانید فایل را در صورت نیاز پردازش کرده و سپس در Cloud Storage آپلود کنید. هنگام انجام کارهای ناهمزمان، مطمئن شوید که در تماس پاسخگوی خود یک وعده جاوا اسکریپت را برمی گردانید.

مثال: تبدیل تصویر

با استفاده از Cloud Functions همراه با برنامه های پردازش تصویر مانند sharp ، می توانید دستکاری هایی را روی فایل های تصویری گرافیکی انجام دهید. در زیر نمونه ای از نحوه ایجاد یک تصویر کوچک برای یک فایل تصویری آپلود شده آورده شده است:

// Download file from bucket.
const bucket = admin.storage().bucket(fileBucket);
const metadata = {
  contentType: contentType,
};
const downloadResponse = await bucket.file(filePath).download();
const imageBuffer = downloadResponse[0];
functions.logger.log("Image downloaded!");

// Generate a thumbnail using sharp.
const thumbnailBuffer = await sharp(imageBuffer).resize({
  width: 200,
  height: 200,
  withoutEnlargement: true,
}).toBuffer();
functions.logger.log("Thumbnail created");

// Upload the thumbnail with a 'thumb_' prefix.
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
await bucket.file(thumbFilePath).save(thumbnailBuffer, {
  metadata: metadata,
});
return functions.logger.log("Thumbnail uploaded!");

این کد یک تصویر کوچک 200x200 برای تصویر ذخیره شده در یک فهرست موقت ایجاد می کند، سپس آن را به Cloud Storage بارگذاری می کند.

نمونه های بیشتری را بررسی کنید

نمونه های بیشتری از توابع متداول تبدیل رسانه از جمله رمزگذاری تصاویر ، تعدیل محتوا ، استخراج ابرداده EXIF . لیست کامل نمونه ها در GitHub موجود است.

،


می‌توانید عملکردی را در پاسخ به آپلود، به‌روزرسانی یا حذف فایل‌ها و پوشه‌ها در Cloud Storage فعال کنید.

نمونه‌های موجود در این صفحه بر اساس یک تابع نمونه است که هنگام آپلود فایل‌های تصویری در Cloud Storage فعال می‌شود. این تابع نمونه نحوه دسترسی به ویژگی‌های رویداد، نحوه بارگیری یک فایل در نمونه Cloud Functions و دیگر اصول مدیریت رویدادهای Cloud Storage را نشان می‌دهد.

برای مثال‌های بیشتر از موارد استفاده، ببینید با Cloud Functions چه کاری می‌توانم انجام دهم؟

عملکردی را در تغییرات Cloud Storage فعال کنید

از functions.storage برای ایجاد تابعی استفاده کنید که رویدادهای Cloud Storage را مدیریت کند. بسته به این که آیا می خواهید عملکرد خود را به یک سطل Cloud Storage خاص اختصاص دهید یا از سطل پیش فرض استفاده کنید، از یکی از موارد زیر استفاده کنید:

به عنوان مثال، نمونه مولد تصاویر کوچک به سطل پیش‌فرض پروژه اختصاص دارد:

exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => {
  // ...
});

Cloud Storage از این رویدادها پشتیبانی می کند:

  • onArchive فقط زمانی ارسال می‌شود که یک سطل نسخه‌سازی شی را فعال کرده باشد. این رویداد نشان می دهد که نسخه زنده یک شی به یک نسخه بایگانی شده تبدیل شده است، یا به این دلیل که بایگانی شده است یا به این دلیل که با آپلود یک شی به همین نام رونویسی شده است.
  • onDelete زمانی ارسال شد که یک شی به طور دائم حذف شد. این شامل اشیایی است که به عنوان بخشی از پیکربندی چرخه حیات سطل بازنویسی شده یا حذف شده اند. برای سطل‌هایی که نسخه‌بندی شی فعال است، هنگامی که یک شی بایگانی می‌شود، این مورد ارسال نمی‌شود (به onArchive مراجعه کنید)، حتی اگر بایگانی‌سازی از طریق روش storage.objects.delete انجام شود.
  • onFinalize ارسال زمانی که یک شی جدید (یا یک نسل جدید از یک شی موجود) با موفقیت در سطل ایجاد شود. این شامل کپی یا بازنویسی یک شی موجود است. آپلود ناموفق این رویداد را راه اندازی نمی کند.
  • onMetadataUpdate زمانی ارسال می شود که ابرداده یک شی موجود تغییر کند.

همانطور که در بالا برای onFinalize نشان داده شده است، رویداد را در کنترل کننده رویداد on تنظیم کنید.

دسترسی به ویژگی‌های شیء Cloud Storage

Cloud Functions تعدادی از ویژگی های شی Cloud Storage مانند size و contentType برای فایل به روز شده در معرض نمایش می گذارد. هرگاه تغییری در ابرداده شیء ایجاد شود، ویژگی 'metageneration' افزایش می یابد. برای اشیاء جدید، مقدار metageneration 1 است.

const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.

نمونه تولید تصویر بندانگشتی از برخی از این ویژگی ها برای تشخیص موارد خروجی استفاده می کند که در آن تابع برمی گردد:

// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
  return functions.logger.log('This is not an image.');
}

// Get the file name.
const fileName = path.basename(filePath);
// Exit if the image is already a thumbnail.
if (fileName.startsWith('thumb_')) {
  return functions.logger.log('Already a Thumbnail.');
}

یک فایل را دانلود، تبدیل و آپلود کنید

در برخی موارد، ممکن است نیازی به دانلود فایل‌ها از Cloud Storage نباشد. با این حال، برای انجام کارهای فشرده مانند تولید یک تصویر کوچک از یک فایل ذخیره شده در Cloud Storage ، باید فایل‌ها را در نمونه توابع دانلود کنید، یعنی ماشین مجازی که کد شما را اجرا می‌کند.

برای دانلود و آپلود آسان اشیا در Cloud Storage ، بسته Google Cloud Storage را با استفاده از npm install --save @google-cloud/storage نصب کنید و آن را وارد کنید. برای استفاده از جاوا اسکریپت برای مدیریت فرآیندهای خارجی مانند وظایف پردازش تصویر کوچک در نمونه، child-process-promise نیز وارد کنید:

const functions = require('firebase-functions/v1');
const admin = require('firebase-admin');
admin.initializeApp()
const path = require('path');

//library for resizing images
const sharp = require('sharp');

از gcs.bucket.file(filePath).download برای دانلود یک فایل در پوشه موقت در نمونه Cloud Functions خود استفاده کنید. در این مکان، می‌توانید فایل را در صورت نیاز پردازش کرده و سپس در Cloud Storage آپلود کنید. هنگام انجام کارهای ناهمزمان، مطمئن شوید که در تماس پاسخگوی خود یک وعده جاوا اسکریپت را برمی گردانید.

مثال: تبدیل تصویر

با استفاده از Cloud Functions همراه با برنامه های پردازش تصویر مانند sharp ، می توانید دستکاری هایی را روی فایل های تصویری گرافیکی انجام دهید. در زیر نمونه ای از نحوه ایجاد یک تصویر کوچک برای یک فایل تصویری آپلود شده آورده شده است:

// Download file from bucket.
const bucket = admin.storage().bucket(fileBucket);
const metadata = {
  contentType: contentType,
};
const downloadResponse = await bucket.file(filePath).download();
const imageBuffer = downloadResponse[0];
functions.logger.log("Image downloaded!");

// Generate a thumbnail using sharp.
const thumbnailBuffer = await sharp(imageBuffer).resize({
  width: 200,
  height: 200,
  withoutEnlargement: true,
}).toBuffer();
functions.logger.log("Thumbnail created");

// Upload the thumbnail with a 'thumb_' prefix.
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
await bucket.file(thumbFilePath).save(thumbnailBuffer, {
  metadata: metadata,
});
return functions.logger.log("Thumbnail uploaded!");

این کد یک تصویر کوچک 200x200 برای تصویر ذخیره شده در یک فهرست موقت ایجاد می کند، سپس آن را به Cloud Storage بارگذاری می کند.

نمونه های بیشتری را بررسی کنید

نمونه های بیشتری از توابع متداول تبدیل رسانه از جمله رمزگذاری تصاویر ، تعدیل محتوا ، استخراج ابرداده EXIF . لیست کامل نمونه ها در GitHub موجود است.

،


می‌توانید عملکردی را در پاسخ به آپلود، به‌روزرسانی یا حذف فایل‌ها و پوشه‌ها در Cloud Storage فعال کنید.

نمونه‌های موجود در این صفحه بر اساس یک تابع نمونه است که هنگام آپلود فایل‌های تصویری در Cloud Storage فعال می‌شود. این تابع نمونه نحوه دسترسی به ویژگی‌های رویداد، نحوه بارگیری یک فایل در نمونه Cloud Functions و دیگر اصول مدیریت رویدادهای Cloud Storage را نشان می‌دهد.

برای مثال‌های بیشتر از موارد استفاده، ببینید با Cloud Functions چه کاری می‌توانم انجام دهم؟

عملکردی را در تغییرات Cloud Storage فعال کنید

از functions.storage برای ایجاد تابعی استفاده کنید که رویدادهای Cloud Storage را مدیریت کند. بسته به این که آیا می خواهید عملکرد خود را به یک سطل Cloud Storage خاص اختصاص دهید یا از سطل پیش فرض استفاده کنید، از یکی از موارد زیر استفاده کنید:

به عنوان مثال، نمونه مولد تصاویر کوچک به سطل پیش‌فرض پروژه اختصاص دارد:

exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => {
  // ...
});

Cloud Storage از این رویدادها پشتیبانی می کند:

  • onArchive فقط زمانی ارسال می‌شود که یک سطل نسخه‌سازی شی را فعال کرده باشد. این رویداد نشان می دهد که نسخه زنده یک شی به یک نسخه بایگانی شده تبدیل شده است، یا به این دلیل که بایگانی شده است یا به این دلیل که با آپلود یک شی به همین نام رونویسی شده است.
  • onDelete زمانی ارسال شد که یک شی به طور دائم حذف شد. این شامل اشیایی است که به عنوان بخشی از پیکربندی چرخه حیات سطل بازنویسی شده یا حذف شده اند. برای سطل‌هایی که نسخه‌بندی شی فعال است، هنگامی که یک شی بایگانی می‌شود، این مورد ارسال نمی‌شود (به onArchive مراجعه کنید)، حتی اگر بایگانی‌سازی از طریق روش storage.objects.delete انجام شود.
  • onFinalize ارسال زمانی که یک شی جدید (یا یک نسل جدید از یک شی موجود) با موفقیت در سطل ایجاد شود. این شامل کپی یا بازنویسی یک شی موجود است. آپلود ناموفق این رویداد را راه اندازی نمی کند.
  • onMetadataUpdate زمانی ارسال می شود که ابرداده یک شی موجود تغییر کند.

همانطور که در بالا برای onFinalize نشان داده شده است، رویداد را در کنترل کننده رویداد on تنظیم کنید.

دسترسی به ویژگی‌های شیء Cloud Storage

Cloud Functions تعدادی از ویژگی های شی Cloud Storage مانند size و contentType برای فایل به روز شده در معرض نمایش می گذارد. هرگاه تغییری در ابرداده شیء ایجاد شود، ویژگی 'metageneration' افزایش می یابد. برای اشیاء جدید، مقدار metageneration 1 است.

const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.

نمونه تولید تصویر بندانگشتی از برخی از این ویژگی ها برای تشخیص موارد خروجی استفاده می کند که در آن تابع برمی گردد:

// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
  return functions.logger.log('This is not an image.');
}

// Get the file name.
const fileName = path.basename(filePath);
// Exit if the image is already a thumbnail.
if (fileName.startsWith('thumb_')) {
  return functions.logger.log('Already a Thumbnail.');
}

یک فایل را دانلود، تبدیل و آپلود کنید

در برخی موارد، ممکن است نیازی به دانلود فایل‌ها از Cloud Storage نباشد. با این حال، برای انجام کارهای فشرده مانند تولید یک تصویر کوچک از یک فایل ذخیره شده در Cloud Storage ، باید فایل‌ها را در نمونه توابع دانلود کنید، یعنی ماشین مجازی که کد شما را اجرا می‌کند.

برای دانلود و آپلود آسان اشیا در Cloud Storage ، بسته Google Cloud Storage را با استفاده از npm install --save @google-cloud/storage نصب کنید و آن را وارد کنید. برای استفاده از جاوا اسکریپت برای مدیریت فرآیندهای خارجی مانند وظایف پردازش تصویر کوچک در نمونه، child-process-promise نیز وارد کنید:

const functions = require('firebase-functions/v1');
const admin = require('firebase-admin');
admin.initializeApp()
const path = require('path');

//library for resizing images
const sharp = require('sharp');

از gcs.bucket.file(filePath).download برای دانلود یک فایل در پوشه موقت در نمونه Cloud Functions خود استفاده کنید. در این مکان، می‌توانید فایل را در صورت نیاز پردازش کرده و سپس در Cloud Storage آپلود کنید. هنگام انجام کارهای ناهمزمان، مطمئن شوید که در تماس پاسخگوی خود یک وعده جاوا اسکریپت را برمی گردانید.

مثال: تبدیل تصویر

با استفاده از Cloud Functions همراه با برنامه های پردازش تصویر مانند sharp ، می توانید دستکاری هایی را روی فایل های تصویری گرافیکی انجام دهید. در زیر نمونه ای از نحوه ایجاد یک تصویر کوچک برای یک فایل تصویری آپلود شده آورده شده است:

// Download file from bucket.
const bucket = admin.storage().bucket(fileBucket);
const metadata = {
  contentType: contentType,
};
const downloadResponse = await bucket.file(filePath).download();
const imageBuffer = downloadResponse[0];
functions.logger.log("Image downloaded!");

// Generate a thumbnail using sharp.
const thumbnailBuffer = await sharp(imageBuffer).resize({
  width: 200,
  height: 200,
  withoutEnlargement: true,
}).toBuffer();
functions.logger.log("Thumbnail created");

// Upload the thumbnail with a 'thumb_' prefix.
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
await bucket.file(thumbFilePath).save(thumbnailBuffer, {
  metadata: metadata,
});
return functions.logger.log("Thumbnail uploaded!");

این کد یک تصویر کوچک 200x200 برای تصویر ذخیره شده در یک فهرست موقت ایجاد می کند، سپس آن را به Cloud Storage بارگذاری می کند.

نمونه های بیشتری را بررسی کنید

نمونه های بیشتری از توابع متداول تبدیل رسانه از جمله رمزگذاری تصاویر ، تعدیل محتوا ، استخراج ابرداده EXIF . لیست کامل نمونه ها در GitHub موجود است.

،


می توانید در پاسخ به بارگذاری ، به روزرسانی یا حذف پرونده ها و پوشه ها در Cloud Storage عملکردی را ایجاد کنید.

نمونه هایی در این صفحه بر اساس یک عملکرد نمونه است که هنگام بارگذاری پرونده های تصویر در Cloud Storage تحریک می شود. این تابع نمونه نحوه دسترسی به ویژگی های رویداد ، نحوه بارگیری یک فایل در یک نمونه Cloud Functions و سایر اصول مربوط به رسیدگی به رویدادهای Cloud Storage را نشان می دهد.

برای نمونه های بیشتر موارد استفاده ، ببینید با Cloud Functions چه کاری می توانم انجام دهم؟

عملکردی را در تغییرات Cloud Storage ایجاد کنید

برای ایجاد تابعی که از وقایع Cloud Storage استفاده می کند ، از functions.storage استفاده کنید. بسته به اینکه آیا می خواهید عملکرد خود را به یک سطل Cloud Storage خاص دامنه یا از سطل پیش فرض استفاده کنید ، از یکی از موارد زیر استفاده کنید:

به عنوان مثال ، نمونه ژنراتور تصویر کوچک به سطل پیش فرض برای پروژه تقسیم می شود:

exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => {
  // ...
});

Cloud Storage از این رویدادها پشتیبانی می کند:

  • onArchive فقط هنگامی ارسال می شود که یک سطل نسخه ای را فعال کند. این رویداد نشان می دهد که نسخه زنده یک شیء به یک نسخه بایگانی شده تبدیل شده است ، یا به دلیل بایگانی شده یا به این دلیل که با بارگذاری یک شی با همین نام رونویسی شده است.
  • onDelete هنگام حذف یک شیء به طور دائم ارسال می شود. این شامل اشیاء است که رونویسی می شوند یا به عنوان بخشی از پیکربندی چرخه عمر سطل حذف می شوند. برای سطل های دارای نسخه اشیاء فعال شده ، این ارسال نمی شود که یک شیء بایگانی شود (به onArchive مراجعه کنید) ، حتی اگر بایگانی از طریق storage.objects.delete رخ دهد.
  • onFinalize ارسال شده هنگامی که یک شیء جدید (یا نسل جدیدی از یک شیء موجود) با موفقیت در سطل ایجاد می شود. این شامل کپی یا بازنویسی یک شی موجود است. آپلود ناموفق این رویداد را راه اندازی نمی کند.
  • onMetadataUpdate هنگامی ارسال شد که ابرداده یک شی موجود تغییر می کند.

همانطور که در بالا برای onFinalize نشان داده شده است ، این رویداد را در محل کنترل on Event تنظیم کنید.

دسترسی به ویژگی های شیء Cloud Storage

Cloud Functions تعدادی از ویژگی های شیء Cloud Storage مانند size و contentType برای پرونده به روز شده افشا می کند. هر زمان که تغییری در ابرداده شی وجود داشته باشد ، ویژگی "متانگی" افزایش می یابد. برای اشیاء جدید ، مقدار metageneration 1 است.

const fileBucket = object.bucket; // The Storage bucket that contains the file.
const filePath = object.name; // File path in the bucket.
const contentType = object.contentType; // File content type.

نمونه تولید تصویر کوچک از برخی از این ویژگی ها برای تشخیص موارد خروجی که در آن عملکرد باز می گردد ، استفاده می کند:

// Exit if this is triggered on a file that is not an image.
if (!contentType.startsWith('image/')) {
  return functions.logger.log('This is not an image.');
}

// Get the file name.
const fileName = path.basename(filePath);
// Exit if the image is already a thumbnail.
if (fileName.startsWith('thumb_')) {
  return functions.logger.log('Already a Thumbnail.');
}

بارگیری ، تبدیل و بارگذاری یک فایل

برای برخی موارد ، ممکن است لازم نیست پرونده ها را از Cloud Storage بارگیری کنید. با این حال ، برای انجام کارهای فشرده مانند تولید تصویر تصویربرداری از پرونده ای که در Cloud Storage ذخیره شده است ، باید پرونده ها را به نمونه توابع بارگیری کنید - یعنی دستگاه مجازی که کد شما را اجرا می کند.

برای بارگیری و بارگیری مجدد اشیاء به Cloud Storage ، بسته Google Cloud Storage را با استفاده از npm install --save @google-cloud/storage و وارد کنید. برای استفاده از وعده های JavaScript برای رسیدگی به فرآیندهای خارجی مانند وظایف پردازش تصویر کوچک در نمونه ، همچنین child-process-promise وارد کنید:

const functions = require('firebase-functions/v1');
const admin = require('firebase-admin');
admin.initializeApp()
const path = require('path');

//library for resizing images
const sharp = require('sharp');

gcs.bucket.file(filePath).download بارگیری برای بارگیری یک فایل در یک دایرکتوری موقت در نمونه Cloud Functions خود. در این مکان می توانید پرونده را در صورت لزوم پردازش کرده و سپس در Cloud Storage بارگذاری کنید. هنگام انجام وظایف ناهمزمان ، حتماً یک وعده جاوا اسکریپت را در پاسخ به تماس خود برگردانید.

مثال: تحول تصویر

با استفاده Cloud Functions همراه با برنامه های پردازش تصویر مانند sharp ، می توانید دستکاری ها را در پرونده های تصویر گرافیکی انجام دهید. در زیر نمونه ای از نحوه ایجاد تصویر تصویربرداری برای یک فایل تصویری بارگذاری شده است:

// Download file from bucket.
const bucket = admin.storage().bucket(fileBucket);
const metadata = {
  contentType: contentType,
};
const downloadResponse = await bucket.file(filePath).download();
const imageBuffer = downloadResponse[0];
functions.logger.log("Image downloaded!");

// Generate a thumbnail using sharp.
const thumbnailBuffer = await sharp(imageBuffer).resize({
  width: 200,
  height: 200,
  withoutEnlargement: true,
}).toBuffer();
functions.logger.log("Thumbnail created");

// Upload the thumbnail with a 'thumb_' prefix.
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
await bucket.file(thumbFilePath).save(thumbnailBuffer, {
  metadata: metadata,
});
return functions.logger.log("Thumbnail uploaded!");

این کد یک تصویر کوچک 200x200 را برای تصویر ذخیره شده در یک فهرست موقت ایجاد می کند ، سپس آن را دوباره به Cloud Storage بارگذاری می کند.

نمونه های بیشتری را کاوش کنید

نمونه های بیشتری از توابع تبدیل رسانه های متداول از جمله تصاویر رمزگذاری ، محتوای تعدیل کننده ، استخراج ابرداده EXIF . لیست کامل نمونه ها در GitHub موجود است.