ToolJet/docs/versioned_docs/version-2.33.0/how-to/loading-image-pdf-from-db.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.7 KiB

id title
loading-image-pdf-from-db Upload And View Images and PDFs Using Base64 String

This guide shows how to upload and view images and PDFs using the base64 string format.

1. Start by Creating a New Table In ToolJet Database

  • Create a new table named testDB.
  • The id field will be present by default to create a unique identifier for each record in our database table.
  • Click on Add more columns button and add two more columns: pdf and image.
  • Select varchar as datatype for the pdf and image columns.

While we are using the ToolJet Database for this guide; feel free to use other databases while applying the same principles.

New Table

2. Upload Files To The Database

  • Create a new application and name it Load PDF And Images Example.
  • Drag and drop two Filepicker components on the canvas from the components library on the right.
  • Rename the first Filepicker component to imagePicker and second Filepicker to pdfPicker.
Rename Filepickers
  • For pdfPicker, change the Accept file types property to {{"pdf/*"}} - this ensures that the Filepicker only accepts PDF files.
Accepted File Type Settings
  • Retain the default {{"image/*"}} setting for the Accept file types property in the imagePicker component, as it's intended for image uploads.
  • Click on the imagePicker component and select an image to upload. Similarly, upload a PDF using the pdfPicker component.
Uploaded Files
  • After uploading, you will see the filenames displayed on their respective Filepicker components.
  • Click on the + Add button in the query panel to create a new query, choose Tooljet Database as the data source, select testDB as Table name, and Create Row as Operations. Name this query uploadFiles.
  • Under the Columns section, add two columns - pdf and image.
  • Set the below value for the pdf column:
{{components.pdfPicker.file[0].base64Data}}
  • Similarly, for the image column:
{{components.imagePicker.file[0].base64Data}}

In the above query, we are using the exposed variables of both Filepicker components to get the base64 strings of the files we had uploaded earlier.

Add Files Query
  • Add a Button component below the Filepickers and rename it to upload.
  • Set the Button's text to Upload and create a New event handler with the following settings: Event - On click, Action - Run Query and Query - uploadFiles.
  • Click on the upload button to upload the files that we had selected in the Filepicker components earlier.
Upload Button Properties

The upload process is now complete. Whenever files are selected in the Filepicker components and the upload button is clicked, the base64 strings of these files will be automatically written to the database.

3. View Image and PDF Files

  • Create a query named getFiles to retrieve base64 strings from testDB: Click on + Add button in the query panel, select Tooljet as Database, testDB as Table name, and List rows as Operations.
  • Enable Run this query on application load? and click on the Run button to run the getFiles query.
Fetch Files Query
  • Drag an Image and a PDF component on the canvas from the components library. Rename the Image component to displayImage and the PDF component to displayPDF.
  • In the URL property of the displayImage component, enter:
{{'data:image;base64,' + queries.getFiles.data[0].image}}
  • Let's apply the same logic for the displayPDF component and enter the below value in the File URL property:
{{'data:pdf;base64,' + queries.getFiles.data[0].pdf}}
PDF Component With File URL

The provided code constructs a Data URL to display the base64-encoded data as an image or PDF.



Here's what our final interface will look like:

Final Preview
You can also use transformations in the query response and concat `data:image/jpeg;base64,` to the base64 data.

Using the above logic, you can upload and view files in ToolJet using the base64 data.