ToolJet/docs/versioned_docs/version-2.33.0/how-to/upload-files-aws.md
Akshay 2d08d889de
Release: Community changes (v2.34.0) (#9226)
* add custom resolvers info and editable row selection info (#9057)

* fix system requirements icon

* add auth info for webhooks and fix casing

* add regex custom validation info (#9068)

* [docs]: Marketplace 1.7 updates (#9085)

* [docs] Amazon redshift plugin

* make minor improvements

* add and update docs for marketplace 1.7

* update order of plugins in overview to match sidebar

* create new version

---------

Co-authored-by: Shubhendra <withshubh@gmail.com>

* add the latest version in the versions.json file (#9094)

* [docs]: Update PDF component (#9088)

* update PDF component

* merged with develop and added changes to the new version

* update docs favicon: (#9118)

* [docs] SSO revamp (#9031)

* add method to set default language

* update image settings through custom css and update screenshots for getting started and tooljet concepts (#9158)

* fix read documentation button

* fix formatting for setup icons (#9172)

* fix sidebar link for aws lambda

* Update static media (#9175)

* updated the screenshots

* reduced the gif size

* reverted the package.json file

* edited the zoomed in images and replaced some gifs with screenshots

* removed one gif

* update static media

* update file names

* update toolbar

* fix file names

* fix: dynamodb img path

* update media for org management dashboard

* fix: casing and formatting

* update workspace constant media

* update media in workspace settings and github

* update github sso

* minor change to github sso docs

* minor fix

* update google sso

* change includeCurrentVersion flag to false

---------

Co-authored-by: Asjad Ahmed Khan <iitasjad2001@gmail.com>
Co-authored-by: Asjad Ahmed Khan <60435499+2001asjad@users.noreply.github.com>
Co-authored-by: Karan Rathod <karan.altcampus@gmail.com>

* Feature: Engagespot plugin (#9012)

* feat(plugins): added engagespot plugin

* feat(docs): added engagespot plugin docs

* chore(engagespot-plugin): revised copywritings

* Feature: Databricks data source (#9174)

* plugin-created

* Databricks integration

* icon, error handling

* removed unrelated changes from marketplace and frontend package-lock.json removed runAsync and maxRows timeouts pending

* timeout implementation

* socket timeout and error handling

* resolve comments

* resolve comments2

* solved render issue test connection improvements

* solved undefined error

* fix TJDB not null value fail for is operation (#9055)

* fix TJDB not null value fail for is operation

* handling not null and null case insenstive values

* Support for marketplace plugin deploy on render preview app (#9221)

* Fix for marketplace error on render preview app

* add marketplace build command

* Adding new workflow for building marketplace plugin

* removed render app creation

* [:docs] Add documentation for Databricks plugin (#9224)

* add docs for databricks

* update databricks docs

* update docs

* remove ref to clusters

* bump to v2.34.0

* Fixed data source cypress failure (#9227)

* updated spec with required text

* updated mongodb and import spec

* updated import spec

---------

Co-authored-by: Karan Rathod <karan.altcampus@gmail.com>
Co-authored-by: Adish M <44204658+adishM98@users.noreply.github.com>
Co-authored-by: Midhun G S <gsmithun4@gmail.com>
Co-authored-by: Shubhendra <withshubh@gmail.com>
Co-authored-by: Aman Regu <amanregu@gmail.com>
Co-authored-by: Asjad Ahmed Khan <iitasjad2001@gmail.com>
Co-authored-by: Asjad Ahmed Khan <60435499+2001asjad@users.noreply.github.com>
Co-authored-by: Jobin Jose <129726530+jobin-logidots@users.noreply.github.com>
Co-authored-by: Syed Mohammad Akhtar Rizvi <85864291+ShazanRizvi@users.noreply.github.com>
Co-authored-by: blank0537 <111295371+blank0537@users.noreply.github.com>
Co-authored-by: Mekhla Asopa <59684099+Mekhla-Asopa@users.noreply.github.com>
2024-03-29 19:13:26 +05:30

5.6 KiB

id title
upload-files-aws Upload files on AWS S3 bucket

Upload and download files on AWS S3 bucket

This guide will help you in quickly building a basic UI for uploading or downloading files from AWS S3 buckets.

Before building the UI, check out the docs for AWS S3 data source to learn about setting up AWS S3 and adding the data source.

Once you have successfully added the AWS data source, build a basic UI using the following widgets:

  • Dropdown: For selecting a bucket in S3 storage.
  • Table: For listing all the objects inside the selected bucket in dropdown.
  • Text Input: For getting a path for the file that is to be uploaded.
  • File picker: For uploading the file.
  • Button: This will be used to fire the upload query.

ToolJet - How To - Upload files on AWS S3 bucket

Queries

We'll create the following queries:

  1. getBuckets
  2. listObjects
  3. uploadToS3
  4. download

getBuckets

This query will fetch the list of all the buckets in your S3. Just create a new query, select AWS S3 data source, and choose List buckets operation. Name the query getBuckets and click Save.

ToolJet - How To - Upload files on AWS S3 bucket

Now, let's edit the properties of dropdown widget.

  • Label: Set the label as Bucket.
  • Option values: Set option values as {{queries.getBuckets.data.Buckets.map(bucket => bucket['Name'])}}. We're mapping the data returned by the query as the returned data is array of abjects.
  • Option label: Set option values as {{queries.getBuckets.data.Buckets.map(bucket => bucket['Name'])}}. This will display the same option label as option values.

You can later add an event handler for running the listObject query whenever an option is selected from the dropdown.

ToolJet - How To - Upload files on AWS S3 bucket

listObjects

This query will list all the objects inside the selected Bucket in dropdown. Select List objects in a bucket operation, enter {{components.dropdown1.value}} in the Bucket field - this will dynamically get the field value from the selected option in dropdown.

ToolJet - How To - Upload files on AWS S3 bucket

Edit the properties of table widget:

  • Table data: {{queries.listObjects.data['Contents']}}
  • Add Columns:
    • Key: Set the Column Name to Key and Key to Key
    • Last Modified: Set the Column Name to Last Modified and Key to LastModified
    • Size: Set the Column Name to Size and Key to Size
  • Add a Action button: Set button text to Copy signed URL, Add a handler to this button for On Click event and Action to Copy to clipboard, in the text field enter {{queries.download.data.url}} - this will get the download url from the download query that we will create next.

ToolJet - How To - Upload files on AWS S3 bucket

download

Create a new query and select Signed URL for download operation. In the Bucket field, enter {{components.dropdown1.value}} and in Key enter {{components.table1.selectedRow.Key}}.

ToolJet - How To - Upload files on AWS S3 bucket

Edit the properties of the table, add a Event handler for running the download query for Row clicked event. This will generate a signed url for download every time a row is clicked on the table.

uploadToS3

Create a new query, select the Upload object operation. Enter the following values in their respective fields:

  • Bucket: {{components.dropdown1.value}}
  • Key: {{ components.textinput1.value + '/' +components.filepicker1.file[0].name}}`
  • Content type: {{components.filepicker1.file[0].type}}
  • Upload data: {{components.filepicker1.file[0].base64Data}}
  • Encoding: base64

ToolJet - How To - Upload files on AWS S3 bucket

Configure the file picker:

Click on the widget handle to edit the file picker properties:

  • Change the Accept file types to {{"application/pdf"}} for the picker to accept only pdf files or {{"image/*"}} for the picker to accept only image files . In the screenshot below, we have set the accepted file type property to {{"application/pdf"}} so it will allow to select only pdf files:

ToolJet - How To - Upload files using GCS

  • Change the Max file count to {{1}} as we are only going to upload 1 file at a time.

  • Select a pdf file and hold it in the file picker.

:::info File types must be valid MIME type according to input element specification or a valid file extension.

To accept any/all file type(s), set Accept file types to an empty value. :::

ToolJet - How To - Upload files using GCS

Final steps, go to the Advanced tab of the uploadToS3 query and add a query to run listObjects query so that whenever a file is uploaded the tabled is refreshed.