MARKETPLACE
PLUGINS
GOOGLE CLOUD STORAGE DROPZONE
Google Cloud Storage Dropzone logo

Google Cloud Storage Dropzone

Published March 2021
   •    Updated this month

Plugin details

This plugin features a blazing fast GOOGLE CLOUD STORAGE DROPZONE with support for preview, image and video resizing, compression, audio compression, and advanced upload capabilities including parallel uploads, resumable uploads, and multi-part (parallel) uploads.
It also includes a powerful set of Google Cloud Storage utilities, usable both as a standalone solution or in support of other plugin operations.

A script is provided to automatically configure your Google Cloud Storage account settings.

To use these actions in conjunction with our plugins, please refer directly to the plugin instructions.

The following elements for Google Cloud Storage are provided:
- GOOGLE CLOUD STORAGE DROPZONE visual element
- GOOGLE CLOUD STORAGE DROPZONE FILE PREVIEWER
- GOOGLE CLOUD STORAGE DROPZONE FILE UTILITIES (FRONT-END)

The following actions for Google Cloud Storage are provided:

𝗕𝗮𝗰𝗸-𝗘𝗻𝗱 𝗔𝗰𝘁𝗶𝗼𝗻𝘀:
- GET UPLOAD PRESIGNED EXPIRING URL (BACK-END)
- GENERATE DOWNLOAD PRESIGNED EXPIRING URL (BACK-END)
- SAVE FILE TO GOOGLE CLOUD STORAGE (BACK-END)
- GET FILE BASE64 DATAURI FROM GOOGLE CLOUD STORAGE (BACK-END)
- DELETE FILE FROM GOOGLE CLOUD STORAGE (BACK-END)
- GET FILE METADATA FROM GOOGLE CLOUD STORAGE (BACK-END)
- LIST FILES FROM GOOGLE CLOUD STORAGE (BACK-END)
- COPY FILE BETWEEN GOOGLE CLOUD STORAGE BUCKETS (BACK-END)
- SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE (BACK-END)
- CREATE BUCKET IN GOOGLE CLOUD STORAGE (BACK-END)
- EDIT DEFAULT BUCKET STORAGE CLASS IN GOOGLE CLOUD STORAGE (BACK-END)
- DELETE BUCKET FROM GOOGLE CLOUD STORAGE (BACK-END)

𝗙𝗿𝗼𝗻𝘁-𝗘𝗻𝗱 𝗔𝗰𝘁𝗶𝗼𝗻𝘀:
- GENERATE DOWNLOAD PRESIGNED EXPIRING URL (FRONT-END)
- DELETE FILE OR FOLDER FROM GOOGLE CLOUD STORAGE (FRONT-END)
- SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE (FRONT-END)

You may use Cloud2Cloud File Transfer Plugin (https://bubble.io/plugin/cloud2cloud-transfer-1682686574569x774496654310506500) to transfer files between storage providers, including Bubble.io.

Demo Link: https://gcputilitiesdemo.bubbleapps.io/version-test

Editor Link: https://bubble.io/page?name=index&id=gcputilitiesdemo-editor&tab=tabs-1

💡 𝗦𝘂𝗯𝘀𝗰𝗿𝗶𝗽𝘁𝗶𝗼𝗻𝘀 𝗮𝗿𝗲 𝗽𝗿𝗼𝗿𝗮𝘁𝗲𝗱. 𝗜𝗳 𝘆𝗼𝘂 𝗶𝗻𝘀𝘁𝗮𝗹𝗹 𝗮𝗻𝗱 𝘂𝗻𝘀𝘂𝗯𝘀𝗰𝗿𝗶𝗯𝗲 𝘁𝗵𝗶𝘀 𝗽𝗹𝘂𝗴𝗶𝗻 𝗶𝗻 𝗼𝗻𝗲 𝗱𝗮𝘆 𝘁𝗼 𝘁𝗲𝘀𝘁 𝗶𝘁 𝗼𝘂𝘁, 𝘆𝗼𝘂'𝗹𝗹 𝗼𝗻𝗹𝘆 𝗯𝗲 𝗰𝗵𝗮𝗿𝗴𝗲𝗱 𝟭/𝟯𝟬𝘁𝗵 𝗼𝗳 𝘁𝗵𝗲 𝗺𝗼𝗻𝘁𝗵𝗹𝘆 𝘀𝘂𝗯𝘀𝗰𝗿𝗶𝗽𝘁𝗶𝗼𝗻 𝗳𝗲𝗲.

📖 𝗦𝘁𝗲𝗽-𝗯𝘆-𝗦𝘁𝗲𝗽 𝗶𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗶𝗼𝗻𝘀 𝗮𝗿𝗲 𝗶𝗻 𝘁𝗵𝗲 "𝗜𝗻𝘀𝘁𝗿𝘂𝗰𝘁𝗶𝗼𝗻𝘀" 𝘀𝗲𝗰𝘁𝗶𝗼𝗻 𝗮𝗻𝗱 𝗗𝗲𝗺𝗼 𝗘𝗱𝗶𝘁𝗼𝗿 𝗶𝘀 𝗶𝗻 𝘁𝗵𝗲 "𝗟𝗶𝗻𝗸𝘀" 𝘀𝗲𝗰𝘁𝗶𝗼𝗻 𝗼𝗳 𝘁𝗵𝗲 𝗣𝗹𝘂𝗴𝗶𝗻 𝗣𝗮𝗴𝗲.

Our plugin portfolio: https://bubble.io/contributor/wiseable-1586609424436x711052886532460500

Contact us at [email protected] for any additional feature you would require or support question.

$129

One time  •  Or  $8/mo

4.6 stars   •   5 ratings
386 installs  
This plugin does not collect or track your personal data.

Platform

Web & Native mobile

Contributor details

wise:able logo
wise:able
Joined 2020   •   122 Plugins
View contributor profile

Instructions

1️⃣: GOOGLE CLOUD STORAGE DROPZONE =============================

📋 ELEMENT DESCRIPTION
--------------------------------
GOOGLE CLOUD STORAGE DROPZONE is a visual element allowing to drop, resize, compress and select single- or multi-files supporting uploading, opening and deleting files with advanced multipart upload capabilities for large files.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by logging in into your Google Cloud Console, opening the Cloud Shell (top right corner of your page) and copy pasting this command and press enter:

wget -q -O wiseable-gcp-dropzone.py \
    https://storage.googleapis.com/bubblegcpdemo/demo-assets/wiseable-gcp-dropzone.py \
 && python3 wiseable-gcp-dropzone.py

Otherwise, follow these manual steps:

0) Set-up a project from Google Cloud Console: https://cloud.google.com/speech-to-text/docs/libraries#setting_up_authentication
- Create or select a project
- Enable the GOOGLE CLOUD STORAGE API for that project
- Create a service account
- Download a private key as JSON.

1) Open the private key JSON file with a text editor, copy/paste the following parameters from your file to the Plugin settings:
- CLIENT_EMAIL
- PROJECT_ID
- PRIVATE_KEY, including the -----BEGIN PRIVATE KEY-----\n prefix and \n-----END PRIVATE KEY-----\n suffix.

2) a) Create a bucket: https://cloud.google.com/storage/docs/quickstart-console#create_a_bucket

2) b) Open your BUCKET, tab PERMISSION, set the following as follow:
   - ACCESS CONTROL: FINE-GRAINED
   - PUBLIC ACCESS PREVENTION: NOT ENABLED BY ORG POLICY OR BUCKET SETTING
   - PUBLIC ACCESS STATUS: SUBJECT TO OBJECT ACLS

2) c) Grant permissions to the service account:
- Go to the IAM & ADMIN, ROLES section: https://console.cloud.google.com/iam-admin/roles
- If not already preselected, select the PROJECT_ID defined before
- Click on CREATE ROLE, enter a CUSTOM ROLE NAME
- Click on ADD PERMISSIONS and in FILTER PERMISSIONS BY ROLE
- Select STORAGE OBJECT ADMIN and STORAGE OBJECT CREATOR to grant the read/write permissions in GOOGLE STORAGE buckets
- SAVE the permissions
- GO back to IAM & ROLES, IAM section: https://console.cloud.google.com/iam-admin
- Click on ADD, enter in NEW MEMBERS the CLIENT_EMAIL defined before
- Select the CUSTOM ROLE name created before, and SAVE.

2) d) Set the CORS configuration by opening the GOOGLE CLOUD CONSOLE by clicking on the top-right corner icon.

Execute:
echo '[
   {
       "origin": [
           "*"
       ],
       "responseHeader": [
           "X-Requested-With",
           "Access-Control-Allow-Origin",
           "Content-Type",
           "Content-Length",
           "Content-Range",
           "Location",
           "Range",
           "X-Goog-Resumable",
           "X-Upload-Content-Type",
           "X-Upload-Content-Length"
       ],
       "method": [
           "GET",
           "POST",
           "HEAD",
           "PUT",
           "DELETE",
           "OPTIONS"
       ],
       "maxAgeSeconds": 3600
   }
]' > cors.json

# Execute:
gsutil cors set cors.json gs://bucket-name

3) Register on plugins.wiseable.io. Create a new Credential which associates your BUBBLE APP URL, CLIENT EMAIL & PRIVATE KEY.
The registration service will generate your PUBLIC ACCESS KEY. This key serves as a secure proxy for your real credentials. It allows your application to communicate with the service without exposing your real credentials. Since this PUBLIC ACCESS KEY is explicitly tied to your registered BUBBLE APP URL, it can only be used from that domain, ensuring that even if the key is publicly visible, it remains safe and cannot be misused by unauthorized sources.

4) In the Plugin Settings, enter the following:
  - CLIENT_EMAIL, PROJECT_ID & PRIVATE_KEY (for back-end actions)
  - PUBLIC ACCESS KEY (generated from plugins.wiseable.io) (for front-end elements)

5) Drag and drop the visual element GOOGLE CLOUD STORAGE DROPZONE in your app, containing the dropzone.

6) Select the GOOGLE CLOUD STORAGE DROPZONE element, in APPEARANCE section, configure the following fields:

FIELDS:
- OUTPUT TYPE: Returned type. Must always be set to FILE METADATA (GOOGLE CLOUD STORAGE DROPZONE).
- ACCEPTED FILES TYPES: Either a case-insensitive filename extension, Format .ext. Example: .jpg, .pdf, or .doc. Or a standard MIME type, with no extensions. The string audio/* matches any audio file. The string video/* matches any video file. The string image/* matches any image file. Format type/subtype. Example: image/png, video/mp4. For more information, see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17. Leave empty to accept any types.
- CAPTURE TYPE: When capturing live media on mobile devices, specifies either the user-facing or environment-facing media input to use, such as camera or microphone. Supported values: user | environment
- RETAIN FOLDER STRUCTURE: Retain folder structure when uploading a folder.
- MAX NUMBER OF FILES: Limit the maximum number of files in the Dropzone. Files beyond this limit will be in REJECTED FILES state.
- MAX FILE SIZE (MIB): Maximum allowed file size in MiB.
- UPLOAD BUCKET: Bucket Name of the file.
- UPLOAD FOLDER: Upload Folder. The format must be [path/]. Example 1: path1/path2/. Example 2: Leave empty if the file is at the root of the bucket.
- MAX PARALLEL UPLOADS: Max Parallel Uploads of Files, excluding chunks.
- AUTO UPLOAD: Set to true to trigger upload as soon as dropped in the Dropzone.
- PART SIZE (MIB): Part size in MiB to split the file in. Minimum value of 5 MiB.

IMAGE RESIZING & COMPRESSION SETTINGS:
- IMAGE MAX WIDTH: If set, the image will be resized to this maximum width before upload. The other dimension will be adjusted proportionally to maintain the aspect ratio and avoid distortion.
- IMAGE MAX HEIGHT: If set, the image will be resized to this maximum height before upload. The other dimension will be adjusted proportionally to maintain the aspect ratio and avoid distortion.
- IMAGE QUALITY: Image quality. The higher the number the higher the quality. Valid range is 0.0-1.0.

VIDEO RESIZING & COMPRESSION SETTINGS:
- CODEC: Target codec. Valid values: libx264 | libx265 | libvpx-vp9 | av1
- QUALITY FACTOR: Quality factor (0=best, 51=worst). Valid values: 0–51.
- PRESET: Encoding speed vs. compression. Valid values: ultrafast | superfast | veryfast | faster | fast | medium | slow | slower | veryslow.
- TUNE: Content optimization. Valid values: film | animation | fastdecode | zerolatency.
- OUTPUT RESOLUTION: Output resolution (e.g., 1280x720). Valid values: WxH (e.g., 1920x1080)

AUDIO COMPRESSION SETTINGS:
- CODEC: Target codec. Valid values: aac | libmp3lame | libvorbis | libopus | pcm_s16le | pcm_s24le | pcm_s32le.
- BITRATE: Target Bitrate. Valid values: 32k | 64k | 96k | 128k | 160k | 192k | 224k | 256k | 320k

7) Integrate the logic into your application using the following GOOGLE CLOUD STORAGE DROPZONE, states and actions:

EVENTS:
- ACCEPTED FILE LOOP: Event triggered for each accepted file, satisfying the ACCEPTED FILES TYPES and MAX FILE SIZE (MIB).
- REJECTED FILE LOOP: Event triggered for each rejected file, e.g. not satisfying the ACCEPTED FILES TYPES or the MAX FILE SIZE (MIB).
- UPLOADED FILE LOOP: Event triggered upon successful file upload.
- ALL FILES UPLOADED: Event triggered when all files have been processed.
- ERROR: Event triggered upon error.

EXPOSED STATES:
Use any element able to show/process the data of interest (such as a Group with a Text field) stored within the result of the following states of the GOOGLE CLOUD STORAGE DROPZONE element:
- ACCEPTED FILES: List of files' metadata satisfying the ACCEPTED FILES TYPES criteria in the dropzone. The available metadata are:
 • file_name - name of the dropped file.
 • upload_percentage - number between 0 and 100 showing the upload progress.
 • compression_percentage - number between 0 and 100 showing the compress progress.
 • file_size_bytes - size of the file in bytes.
 • object_url: value to set as input of the previewer,
 • mime_type: MIME-Type of the file. Value to set as input of the previewer,
 • status - added, queued, uploading, compressing, error, success.
   ▪ added - means the file is dropped to the dropzone and the destination URL is not assigned.
   ▪ queued - means to URL is assigned but there are other files uploading (2 files are uploaded at the same time).
   ▪ uploading - file is uploading.
   ▪ compressing - file is compressing.
   ▪ error - there was an error during the upload.
   ▪ success - upload is successful.
 • uuid - is a random identifier of this file.
 • upload_filepath - Path & File Name. The format is [path/]filename.ext.
 • upload_bytes_sent - upload progress in bytes.
 • bucket - bucket name where the file is uploaded.
- REJECTED FILES: List of rejected files' metadata. Same metadata as ACCEPTED FILES added the following:
 • message - rejection reason.
- TOTAL UPLOAD PROGRESS: Percentage of total uploaded bytes divided by the upload list's file's size.
- DRAGGING OVER: Returns true if a file is dragging over the dropzone, else otherwise.
- ERROR MESSAGE: Populated upon ERROR event.

ELEMENT ACTIONS - TRIGGERED IN WORKFLOW:
- REMOVE FILE FROM: Removes the specified file in the dropzone, identified by its UUID.
- RESET: Reset the dropzone to its initial state.
- CANCEL FILE UPLOAD: Cancel the specified file being uploaded, identified by its UUID.
- PROCESS UPLOAD QUEUE: Manually trigger the upload of queued files when AUTO UPLOAD is set to no.

2️⃣: GOOGLE CLOUD STORAGE DROPZONE FILE PREVIEWER
===============================================

📋 ELEMENT DESCRIPTION
--------------------------------
GOOGLE CLOUD STORAGE DROPZONE FILE PREVIEWER is a visual element allowing to display media preview along with controls when supported.

🔧 STEP-BY-STEP SETUP
--------------------------------

1) Drag and drop the visual element GOOGLE CLOUD STORAGE DROPZONE FILE PREVIEWER in your app.

2) Select the GOOGLE CLOUD STORAGE DROPZONE FILE PREVIEWER element, in APPEARANCE section, configure the following fields:

FIELDS:
- FILE OBJECT URL: Must contain the OBJECT_URL of the file to preview of the GOOGLE CLOUD STORAGE DROPZONE's ACCEPTED FILES state.
- MIME TYPE: Must contain the MIME-TYPE of the file to preview of the GOOGLE CLOUD STORAGE DROPZONE's ACCEPTED FILES state.
- SHOW CONTROLS: Show or hide media controls.

3) Integrate the logic into your application using the following GOOGLE CLOUD STORAGE DROPZONE, states and actions:

EXPOSED STATES:
Use any element able to show/process the data of interest (such as a Group with a Text field) stored within the result of the following states of the GOOGLE CLOUD STORAGE DROPZONE element:
- IS PREVIEWABLE: Returns yes if the media is previewable.

3️⃣: GOOGLE CLOUD STORAGE DROPZONE FILE UTILITIES (FRONT-END)
===========================================================

📋 ELEMENT DESCRIPTION
--------------------------------
GOOGLE CLOUD STORAGE DROPZONE FILE UTILITIES (FRONT-END) provides front-end actions for Google Cloud Storage operations with client-side processing, ideal for mobile applications and improved responsiveness.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform steps 0 to 4 from the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Add the GOOGLE CLOUD STORAGE DROPZONE FILE UTILITIES (FRONT-END) element to the page where Google Cloud Storage operations must be integrated.

2) Integrate the logic into your application using the following element's states and actions:

EVENTS:
- SUCCESS: Event triggered upon success.
- ERROR: Event triggered upon error.

EXPOSED STATES:
- RESULTS: Populated upon SUCCESS event. Returns the operation results.
- ERROR MESSAGE: Populated upon ERROR event. Always check this state and implement error handling using the ERROR event to provide a better user experience.
- REQUESTED ACTION: Latest requested Action

ELEMENT ACTIONS - TRIGGERED IN WORKFLOW:
- GENERATE DOWNLOAD PRESIGNED EXPIRING URL (FRONT-END): Generate an URL allowing access to the specified object, expiring after the specified duration.
- DELETE FILE OR FOLDER FROM GOOGLE CLOUD STORAGE (FRONT-END): Delete a file or folder from your Google Cloud Storage Bucket.
- SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE (FRONT-END): Enable or disable public access via the Google Cloud Storage public URL.

4️⃣: GET UPLOAD PRESIGNED EXPIRING URL (BACK-END)
===============================================

📋 ACTION DESCRIPTION
--------------------------------
GET UPLOAD PRESIGNED EXPIRING URL generates an URL allowing uploading for the specified bucket and path. This action is used in conjunction with the GOOGLE CLOUD STORAGE DROPZONE visual element.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "GET UPLOAD PRESIGNED EXPIRING URL (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name of the file.
- PATH & FILE NAME: Path & File Name to process. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.

Output Fields:
- URL: Returns the presigned expiring URL.

5️⃣: GENERATE DOWNLOAD PRESIGNED EXPIRING URL (BACK-END)
======================================================

📋 ACTION DESCRIPTION
--------------------------------
GENERATE DOWNLOAD PRESIGNED EXPIRING URL generates an URL allowing access to the specified object, expiring after the specified duration. The presigned URLs are useful if you want your user/customer to be able to download a specific object from your bucket, but you don't require them to have Google Cloud security credentials, permissions, nor bucket public access.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "GENERATE DOWNLOAD PRESIGNED EXPIRING URL (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name of the file.
- PATH & FILE NAME: Path & File Name to process. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- EXPIRE AFTER (S): The number of seconds before the presigned URL expires. Defaults to 60 minutes.

Output Fields:
- URL: Returns the presigned expiring URL in Google Cloud Storage public format. Format is https://storage.googleapis.com/bucket-name/file.ext?token.

6️⃣: SAVE FILE TO GOOGLE CLOUD STORAGE (BACK-END)
===============================================

📋 ACTION DESCRIPTION
--------------------------------
SAVE FILE TO GOOGLE CLOUD STORAGE stores a file in your Google Cloud Storage Bucket, returning the object key or URL if the operation is successful. The file must be less than 22 megabytes to be executable in backend workflow.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "SAVE FILE TO GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- FILE TO STORE (URL): File URL from the Bubble.io uploader, or a Protocol-relative URLs (//server/file.ext), or a HTTPS file URL (https://server/file.ext). The file must be accessible through the HTTPS protocol. The file must be less than 22 megabytes.
- BUCKET NAME: Bucket Name to which the file will be saved.
- PATH & FILE NAME: Path & File Name to save to. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- GENERATE URLS: Generate Google Cloud Storage public URLs format in the response. Format is https://storage.googleapis.com/bucket-name/file.ext.

Output Fields:
- FILE: Returns the object key or URL. For URL, format is https://storage.googleapis.com/bucket-name/file.ext. Use this URL to retrieve the file, providing your bucket's permission allow getObject permission from the Internet.

7️⃣: GET FILE BASE64 DATAURI FROM GOOGLE CLOUD STORAGE (BACK-END)
================================================================

📋 ACTION DESCRIPTION
--------------------------------
GET FILE BASE64 DATAURI FROM GOOGLE CLOUD STORAGE retrieves the file Data URI from your Google Cloud Storage Bucket, encoded in Base64. Use this action to load the URI in an element supporting this format, such as an audio player, or store the datastream into a database. The file must be less than 4.5 megabytes to be executable in backend workflow.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "GET FILE BASE64 DATAURI FROM GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name from which the file will be retrieved.
- PATH & FILE NAME: Path & File Name to retrieve. The file must be less than 4.5 megabytes. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.

Output Fields:
- BASE64 DATAURI: Returns the base64-encoded file data.

8️⃣: DELETE FILE FROM GOOGLE CLOUD STORAGE (BACK-END)
===================================================

📋 ACTION DESCRIPTION
--------------------------------
DELETE FILE FROM GOOGLE CLOUD STORAGE deletes a file from your Google Cloud Storage bucket, returning the object key or URL if the operation is successful.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "DELETE FILE FROM GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name from which the file will be deleted.
- PATH & FILE NAME: Path & File Name to delete. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- GENERATE URLS: Generate Google Cloud Storage public URLs format in the response. Format is https://storage.googleapis.com/bucket-name/file.ext.

Output Fields:
- FILE: Returns the object key or URL.

9️⃣: GET FILE METADATA FROM GOOGLE CLOUD STORAGE (BACK-END)
=========================================================

📋 ACTION DESCRIPTION
--------------------------------
GET FILE METADATA FROM GOOGLE CLOUD STORAGE retrieves the metadata of the specified object.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "GET FILE METADATA FROM GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name of the file.
- PATH & FILE NAME: Path & File Name to process. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.

Output Fields:
- FILE SIZE: Returns the size of the file's content in bytes.
- CREATED AT: Returns the date and time at which the file was created (RFC 3339 date-time).
- TAGS: Returns a list of tags. Each tag is formatted as key=value.

🔟: LIST FILES FROM GOOGLE CLOUD STORAGE (BACK-END)
==================================================

📋 ACTION DESCRIPTION
--------------------------------
LIST FILES FROM GOOGLE CLOUD STORAGE returns the list of files' key or URLs from a Google Cloud Storage bucket.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "LIST FILES FROM GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name from which the list will be retrieved.
- PREFIX FILTER: Limit the response to keys that begin with the specified string, starting from the bucket name root.
- GENERATE URLS: Generate Google Cloud Storage public URLs format in the response. Format is https://storage.googleapis.com/bucket-name/file.ext.

Output Fields:
- LIST: Returns the list of files' key or URL.

1️⃣1️⃣: COPY FILE BETWEEN GOOGLE CLOUD STORAGE BUCKETS (BACK-END)
==============================================================

📋 ACTION DESCRIPTION
--------------------------------
COPY FILE BETWEEN GOOGLE CLOUD STORAGE BUCKETS copy a file from a source bucket and path to a target bucket and path, then returns the object key or URL of the target file.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "COPY FILE BETWEEN GOOGLE CLOUD STORAGE BUCKETS (BACK-END)" action in the workflow.

Input Fields:
- SOURCE BUCKET NAME: Bucket Name of the source file.
- SOURCE PATH & FILE NAME: Source Path & File Name that will be copied. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- TARGET BUCKET NAME: Bucket Name to which the file will be retrieved from.
- TARGET PATH & FILE NAME: Target Path & File Name. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- GENERATE URLS: Generate Google Cloud Storage public URLs format in the response. Format is https://storage.googleapis.com/bucket-name/file.ext.

Output Fields:
- FILE: Returns the object key or URL.

1️⃣2️⃣: SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE (BACK-END)
==============================================================

📋 ACTION DESCRIPTION
--------------------------------
SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE enables or disable public access via the Google Cloud Storage public URL.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "SET FILE PUBLIC ACCESS IN GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name of the file.
- PATH & FILE NAME: Path & File Name. The format must be [path/]filename.ext.
 Example 1: path1/path2/filename.ext.
 Example 2: filename.ext if the file is at the root of the bucket.
- PUBLIC ACCESS: Enable public access via the Google Cloud Storage public URL.
- GENERATE URLS: Generate Google Cloud Storage public URLs format in the response. Format is https://storage.googleapis.com/bucket-name/file.ext.

Output Fields:
- FILE: Returns the object key or URL.

1️⃣3️⃣: CREATE BUCKET IN GOOGLE CLOUD STORAGE (BACK-END)
======================================================

📋 ACTION DESCRIPTION
--------------------------------
CREATE BUCKET IN GOOGLE CLOUD STORAGE creates a bucket with a standard default object class at a specified location.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "CREATE BUCKET IN GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name to create.
- LOCATION: Location where you want to store your bucket's object data. For example, US-EAST1. See https://cloud.google.com/storage/docs/locations

Output Fields:
- BUCKET NAME: Name of the created bucket.

1️⃣4️⃣: EDIT DEFAULT BUCKET STORAGE CLASS IN GOOGLE CLOUD STORAGE (BACK-END)
==========================================================================

📋 ACTION DESCRIPTION
--------------------------------
EDIT DEFAULT BUCKET STORAGE CLASS IN GOOGLE CLOUD STORAGE modifies the default object class of an existing bucket.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "EDIT DEFAULT BUCKET STORAGE CLASS IN GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name to modify.
- STORAGE CLASS: Storage class of your bucket. Valid values are STANDARD | NEARLINE | COLDLINE | ARCHIVE. See https://cloud.google.com/storage/docs/storage-classes#classes

Output Fields:
- BUCKET NAME: Name of the modified bucket when successful.

1️⃣5️⃣: DELETE BUCKET FROM GOOGLE CLOUD STORAGE (BACK-END)
========================================================

📋 ACTION DESCRIPTION
--------------------------------
DELETE BUCKET FROM GOOGLE CLOUD STORAGE deletes the specified bucket.

🔧 STEP-BY-STEP SETUP
--------------------------------
ℹ️ The steps from 0) to 2) d) can be automatically performed by using the automated configuration script mentioned in the GOOGLE CLOUD STORAGE DROPZONE setup.

0) If not already done, perform the steps 0, 1, and 2 of the GOOGLE CLOUD STORAGE DROPZONE setup.

1) Set up the "DELETE BUCKET FROM GOOGLE CLOUD STORAGE (BACK-END)" action in the workflow.

Input Fields:
- BUCKET NAME: Bucket Name to delete.

Output Fields:
- BUCKET NAME: Name of the deleted bucket when successful.

🔍 IMPLEMENTATION EXAMPLE
======================
Feel free to browse the app editor in the Service URL for an implementation example.

ℹ️ ADDITIONAL INFORMATION
======================
N/A

⚠️ TROUBLESHOOTING
================
Any plugin related error will be posted either to:
- Your browser Javascript console: Instructions here https://webmasters.stackexchange.com/questions/8525/how-do-i-open-the-javascript-console-in-different-browsers
- Logs tab, "Server logs" section of your App Editor.

Make sure that "Plugin server side output" and "Plugin client side output" is selected in "Show Advanced". Server Logs Details: https://manual.bubble.io/core-resources/bubbles-interface/logs-tab#server-logs

For front-end actions, you can also open your browser's developer console (F12 or Ctrl+Shift+I in most browsers) to view detailed error messages and logs.

Always check the ERROR MESSAGE state of the element and implement error handling using the ERROR event to provide a better user experience.

⚡ PERFORMANCE CONSIDERATIONS
===========================

𝗚𝗘𝗡𝗘𝗥𝗔𝗟
-------------
The largest retrievable result-set from Google Cloud Storage for back-end actions is capped at 30 seconds duration time - this does not apply to front-end actions.

⏱️ 𝗕𝗔𝗖𝗞-𝗘𝗡𝗗 𝗔𝗖𝗧𝗜𝗢𝗡 𝗦𝗧𝗔𝗥𝗧 𝗗𝗘𝗟𝗔𝗬
-----------------------------------------------
Each time a server-side action is called, Bubble initializes a small virtual machine to execute the action. If the same action is called shortly after, the caching mechanism kicks in, resulting in faster execution on subsequent calls.

A useful workaround is to fire a dummy execution at page load, which pre-warms the Bubble engine for the next few minutes, reducing the impact of cold starts for your users.

𝗦𝗔𝗩𝗘 𝗙𝗜𝗟𝗘 𝗧𝗢 𝗚𝗢𝗢𝗚𝗟𝗘 𝗖𝗟𝗢𝗨𝗗 𝗦𝗧𝗢𝗥𝗔𝗚𝗘 (𝗕𝗔𝗖𝗞-𝗘𝗡𝗗)
---------------------------------------------------------------
This implementation posts file data to Google Cloud Storage.
The file must be less than 22 megabytes to be executable in backend workflow, as the maximum allowable file size is capped by Bubble.io's Workflow Action maximum execution time to perform this transfer operation.

𝗚𝗘𝗧 𝗙𝗜𝗟𝗘 𝗕𝗔𝗦𝗘𝟲𝟰 𝗗𝗔𝗧𝗔𝗨𝗥𝗜 𝗙𝗥𝗢𝗠 𝗚𝗢𝗢𝗚𝗟𝗘 𝗖𝗟𝗢𝗨𝗗 𝗦𝗧𝗢𝗥𝗔𝗚𝗘 (𝗕𝗔𝗖𝗞-𝗘𝗡𝗗)
---------------------------------------------------------------------------------
This implementation gets file data from Google Cloud Storage.
The file must be less than 4.5 megabytes to be executable in backend workflow, as the maximum allowable file size is capped by Bubble.io's Workflow Action maximum execution time to perform this transfer operation.

❓ QUESTIONS?
===========
Contact us at [email protected] for any additional feature you would require or support question.

Types

This plugin can be found under the following types:
Api   •   Element   •   Event   •   Action

Categories

This plugin can be found under the following categories:
Technical   •   Data (things)   •   Input Forms   •   Visual Elements

Resources

Support contact
Documentation
Tutorial

Rating and reviews

Average rating (4.6)

Latest update is slowing upload
May 22nd, 2024
I initially had issues with thumbnail generation when uploading over 50 images which caused my browser to crash. Thought that the latest update would fix it but it made uploads slow even when thumbnail generation is off. Reverted back to the previous version for now. I am using a workaround for thumbnail generation: A workflow to generate a presigned download and referring to that image instead. Much faster. Edit: uploaded file loop event has issues when there are too many uploads at the same time. I am running a workflow to append the uuid to a list and some items get missed out and duplicated values.
Thanks for your feedback! This is now fixed on the latest plugin version - see https://forum.bubble.io/t/dropzone-uploaders-with-playable-media-previews-native-compression-resizing-for-video-image-audio-now-for-aws-s3-gcp-google-storage-wasabi/368595?u=redvivi (plugin author)
May 5th, 2025
  •  
wise:able
Works exactly as described and great customer service!
February 8th, 2024
Been using this plugin for over a year with no issues, had a small one crop up recently and the team responded and fixed the bug within 12 hours! Highly recommended.
Very good!
May 4th, 2023
Does excactly what it promises. No style customization but you can just group it and overlay yourself.
Great plugin and team support is amazing
October 20th, 2022
Many thanks! We wish you the best with your project! (plugin author)
November 2nd, 2022
  •  
wise:able
Does exactly what it says
December 22nd, 2021
Perfect forinteracting with GCP storage. I had been looking for this for a long time, so thank you!
This goes straight to our hearts ❤️! Thank you, awesome user! (plugin author)
November 2nd, 2022
  •  
wise:able
Bubble