FileConnector (REST/JSON)
Profit Connector voor het uploaden en downloaden van bestanden.
Inhoud |
Bestand ophalen uit Profit
Je hebt de GUID en de originele bestandsnaam van de bijlage nodig, deze kun je ophalen met een GetConnector. Daarna roep je de FileConnector aan en haal je het bestand op.
Je kunt de FileConnector alleen gebruiken voor het ophalen van bestanden als de SubjectConnector in de app connector geactiveerd is.
Guid en bestandsnaam opvragen via GetConnector:
- Ga naar: Algemeen / Uitvoer / Beheer / GetConnector.
- Voeg een GetConnector toe op basis van de gegevensverzameling Bestanden bij dossier.
- De gegevensverzameling bevat standaard de velden Bijlage (GUID) en Naam (bestandsnaam).
Bestand ophalen met de connector:
- Roep de Profit REST Services aan.
- Aanroep:
<endpoint>/fileconnector/{GUID}/{filename}
Voorbeeld:
<endpoint>/fileconnector/F64BB8E942BBC5E94FC747904E19FE1B/Invoice3734.pdf
Let op:
Je vindt alle endpoints voor connectoren op de centrale pagina URL's van REST Services.
De bestandsnaam moet de originele naam zijn die je uit Profit hebt opgehaald. Je mag dus niet zelf een naam verzinnen. Zie ook hieronder bij 'Spaties en speciale tekens'.
- Je slaat het bestand op op één van de volgende manieren:
- Base64-string
- Originele bestandsindeling met de originele bestandsnaam (Binary)
Error handling
HTTP 404: Als een bestand niet bestaat of je geen rechten hebt op een bestand krijg je een HTTP 404 File not found error. Controleer of het bestand bestaat. Als het bestand bestaat pas dan de autorisatie aan. De oorzaak hiervan zal zijn dat de gebruikersgroep geen rechten heeft op het gegevensfilter van de dossieritems. Zie voor meer informatie: Dossier autoriseren via gegevensfilters.
Spaties en speciale tekens:
Voor de aanroep op de webservice moeten vreemde tekens encoded (zogenaamd escape/escaping) encoded worden. Voor meer informatie en andere tekens dan de onderstaande, zie https://www.w3schools.com/tags/ref_urlencode.asp.
Voorbeeld:
Bestandsnaam van een bijlage: Gabriëls 123456.pdf
In de aanroep wordt dit: Gabri%C3%ABls%20123456.pdf"
De speciale tekens zijn als volgt omgezet: %C3%AB is ë en %20 is spatie
De volledige aanroep, inclusief de GUID: /fileconnector/5B57047D42C6B5F245E864BDF5BFAFC5/Gabri%C3%ABls%20123456.pdf
Hieronder zie je de belangrijkste tekens en de bijbehorende encoding. In deze lijst staan ook tekens die niet zijn toegestaan in een bestandsnaam, hiervoor gelden dezelfde regels als voor Windows-bestandsnamen.
Teken |
Encoding |
/ |
_2F |
# |
_23 |
& |
_26 |
: |
_3A |
? |
_3F |
* |
_2A |
< |
_3C |
> |
_3E |
% |
_25 |
+ |
_2B |
~ |
_7E |
- |
_2D |
@ |
_40 |
! |
_21 |
$ |
_24 |
_ (underscore) |
_5F |
' (enkele quote) |
_27 |
Bestand uploaden naar Profit
Je kunt de FileConnector alleen gebruiken voor het uploaden van bestanden als de juiste UpdateConnector in de app connector geactiveerd is. Gebruik een geschikte UpdateConnector, zoals KnSubject.
Je kunt dit proces niet testen via AFAS Connect. Gebruik de onderstaande voorbeeldcode om je eigen toepassing te bouwen.
$posturl = 'https://12345.rest.afas.online/ProfitRestServices/fileconnector/KnSubject/IMG_20202206_173801.jpg'
#locatie bestand input
$FilePath = "C:\temp\IMG_20200706_173801.jpg"
#Load file
$fileBytes = [System.IO.File]::ReadAllBytes($FilePath);
#hash file
$fileEnc = [System.Text.Encoding]::GetEncoding('UTF-8').GetString($fileBytes);
#set boundary
$boundary = [System.Guid]::NewGuid().ToString();
#set linefeed as variable
$LF = "`r`n";
#Create content for request
$bodyLines = (
"--$boundary",
"Content-Disposition: form-data; name=`"file`"; filename=`"temp.txt`"",
"Content-Type: application/octet-stream$LF",
$fileEnc,
"--$boundary--$LF"
) -join $LF
#Set security requirements
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
#Execute request
$Result = Invoke-RestMethod -Uri $posturl -Headers $Headers -Method Post -ContentType "multipart/form-data; boundary=`"$boundary`"" -Body $bodyLines