Bir işlevi, kullanıcı tarafından oluşturulan yükleme, güncelleme veya Cloud Storage'da dosya ve klasör silme.
Bu sayfadaki örnekler, resim reklamınızı tıkladığında tetiklenen örnek bir işleve dosyaları Cloud Storage'a yüklenir. Bu örnek işlevde, etkinlik özelliklerine nasıl erişilir, Cloud Functions'a dosya indirme örneği ve Cloud Storage etkinliklerinin işlenmesiyle ilgili diğer temel bilgiler.
Kullanım alanıyla ilgili daha fazla örnek için bkz. Cloud Functions ile neler yapabilirim?
Cloud Storage değişikliklerinde bir işlevi tetikleme
functions.storage
kullanın
işleyen bir fonksiyon
Cloud Storage etkinlikleri. Kapsamı belirlemek isteyip istemediğinize bağlı olarak,
işlevini belirli bir Cloud Storage paketine yükleyebilir veya
paketi için aşağıdakilerden birini kullanın:
functions.storage.object()
API'sini kullanabilirsiniz.functions.storage.bucket('bucketName').object()
dinlemenizi sağlar.
Örneğin, küçük resim oluşturma aracı örneği, şunun için varsayılan paketin kapsamına alınır: temsil eder:
exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => { // ... });
Cloud Storage şu etkinlikleri destekler:
onArchive
Yalnızca bir pakette nesne sürümü oluşturma etkinleştirildiğinde gönderilir. Bu etkinlik, bir nesnenin canlı sürümünün, ya arşivlendiği ya da aynı ada sahip bir nesne yüklemesi ile üzerine yazıldığı için arşivlenmiş bir sürüm haline geldiğini belirtir.onDelete
Bir nesne kalıcı olarak silindiğinde gönderilir. Buna, paketin yaşam döngüsü yapılandırması kapsamında üzerine yazılan veya silinen nesneler dahildir. Nesnede sürüm oluşturma özelliğinin etkinleştirildiği paketlerde, arşivlemestorage.objects.delete
yöntemi kullanılarak yapılsa bile bir nesne arşivlendiğinde (bkz.onArchive
) bu gönderilmez.onFinalize
Pakette yeni bir nesne (veya mevcut bir nesnenin yeni nesli) başarıyla oluşturulduğunda gönderilir. Bu, mevcut bir nesnenin kopyalanmasını veya yeniden yazılmasını içerir. Başarısız olan bir yükleme, bu etkinliği tetiklemez.onMetadataUpdate
Mevcut bir nesnenin meta verileri değiştiğinde gönderilir.
Etkinliği, onFinalize
için yukarıda gösterildiği gibi on
etkinlik işleyici içinde ayarlayın.
Cloud Storage nesne özelliklerine erişme
Cloud Functions, Cloud Storage gibi çeşitli Cloud Storage nesne özelliklerini kullanıma sunar.
olması
size
ve
contentType
. İlgili içeriği oluşturmak için kullanılan
"metajenerasyon"
özelliğinde bir değişiklik olduğunda
meta verileri. Yeni nesneler için metageneration
değeri 1
olur.
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.
Küçük resim oluşturma örneği, çıkışı algılamak için bu özelliklerden bazılarını kullanır işlevin şu sonuçları döndürdüğü durumlar:
// 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.'); }
Dosya indirme, dönüştürme ve yükleme
Bazı durumlarda Cloud Storage. Bununla birlikte, yeni bir model oluşturmak gibi Cloud Storage'da depolanan bir dosyadan alınan küçük resim dosyasını indirmek için örneğin, çalışan sanal makineyi çalıştıran bir sanal makine kodunuz.
Nesneleri kolayca indirip Cloud Storage'a yeniden yüklemek için
Google Bulut Depolama
paket
npm install --save @google-cloud/storage
adlı dosyayı içe aktarıp içe aktarın. JavaScript kullanmak için
küçük resim işleme görevleri gibi harici
süreçlerin ele alınması,
örnek, child-process-promise
öğesini de içe aktar:
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');
Bir dosyayı geçici bir klasöre indirmek için gcs.bucket.file(filePath).download
uygulamasını kullanın
Cloud Functions örneğinizdeki dizin oluşturur. Bu konumda şunları yapabilirsiniz:
dosyayı gerektiği gibi işleyip Cloud Storage'a yükleyin. Zaman
eş zamansız görevleri yerine getirmek için,
geri arama.
Örnek: Resim dönüştürme
Cloud Functions'ı aşağıdakiler gibi görüntü işleme programlarıyla birlikte kullanarak:
sharp
, yapabileceğiniz işlemler:
grafik görüntü dosyaları üzerinde değişiklikler. Aşağıda, bu tür bir riskin
Yüklenen bir resim dosyası için küçük resim oluşturma:
// 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!");
Bu kod, Geçici bir dizine kaydedilen ve ardından yüklenen resim için 200x200 küçük resim Cloud Storage'a dönebilir.
Diğer örnekleri keşfedin
Aşağıdakiler dahil olmak üzere yaygın medya dönüşüm işlevleriyle ilgili daha fazla örnek: resimlerin kodunu dönüştürme, içerik moderasyonu, EXIF meta verilerini çıkarma. Örneklerin tam listesi şunlardır: GitHub'da bulabilirsiniz.