Een bestand of plaatje uploaden naar Knack.com

Hoe laad ik een plaatje in Knack.com?

De meeste DML-statements op Knack spreken voor zich. Echter, hoe vul je een Image veld met een plaatje of bestand?

Voor het uploaden van plaatjes is er voor elke tabel met een of meer plaatjes een tweede variant waarbij de tabelnaam eindigt op Expanded. In de tweede variant zie je voor elke image een extra veld dat eindigt op _data. Dit veld bevat bij lezen de binaire representatie van de afbeelding of bestand en bij wijzigen of toevoegen kun je hierin de gewenste waarde doorgeven.

Een voorbeeld: de tabel Dagelijkse_update bevat de gegevens inclusief een URL naar de plaatjes. Een van de imagevelden is fireplot_gemeente. De tabel kun je via SQL uitlezen en wijzigen.

Het toevoegen van een rij met plaatje gaat via de tweede variant als volgt:

insert
into Dagelijkse_updateExpanded
( fireplot_gemeente_filename
, fireplot_gemeente_data
)
select basename(fle.file_path)
,      rfe.file_contents 
from   files('C:\Afbeeldingen', '*.png', false)@os fle
join   read_file@os(fle.file_path) rfe

De files tabelfunctie stelt je in staat de bestandsnaam van alle PNG-plaatjes op te halen uit de map C:\Afbeeldingen. Met basename wordt het pad verwijderd van de bestandsnaam. De binaire inhoud wordt opgehaald via read_file en vervolgens aangeboden aan de velden fireplot_gemeente_filename en fireplot_gemeente_data die samen onderdeel uitmaken van de velden van de relationele afbeelding van het Image datatype uit Knack.com.

Waarom een tweede tabel voor documenten?

De splitsing van 1 API in twee tabellen is niet specifiek voor Knack. Veel cloudplatformen bieden de mogelijkheid om bestanden en afbeeldingen te gebruiken. Denk aan VismaNet of Exact Online met DocumentAttachmentFiles / DocumentAttachments.

Aangezien de tweede variant bij lezen alle documenten integraal ophaalt ook als je maar de inhoud van een paar tekstvelden nodig hebt, kan dit enorm veel dataverkeer veroorzaken. Het splitsen van de Knacktabel in twee varianten zorgt er voor dat je vlot de relationele gegevens kunt ophalen via de standaartabel, maar toegang houdt tot de uitgebreide mogelijkheden voor het ophalen en schrijven van bestanden en afbeeldingen.