Concatenate Strings from a Payload

I'm working on a project where I need to send images from an ESP32-CAM to Node-Red via MQTT. As the image can be very heavy, I chose to split the string (Base64) into chunks and reassemble it in Node-Red. To reassemble I'm trying to use the Join node, it works, but it adds each chunk as a new line, breaking the final payload result. Is there any way to concatenate strings without adding new lines?

My flow:

[{"id":"aaa2f6a8.167508","type":"tab","label":"Flow 2","disabled":false,"info":""},{"id":"ae2e7a65.89c638","type":"mqtt in","z":"aaa2f6a8.167508","name":"","topic":"PICTURE","qos":"2","datatype":"auto","broker":"fb44c7e.d7ff038","x":360,"y":260,"wires":[["13fbc609.551cca","6e7f02b7.8d7f8c"]]},{"id":"313660dc.b0e4e","type":"image","z":"aaa2f6a8.167508","name":"","width":"200","data":"payload","dataType":"msg","thumbnail":false,"active":true,"pass":true,"outputs":1,"x":720,"y":280,"wires":[[]]},{"id":"26f92174.9bef6e","type":"debug","z":"aaa2f6a8.167508","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":340,"wires":[]},{"id":"13fbc609.551cca","type":"debug","z":"aaa2f6a8.167508","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":370,"y":360,"wires":[]},{"id":"6e7f02b7.8d7f8c","type":"join","z":"aaa2f6a8.167508","name":"","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":530,"y":260,"wires":[["810b0ec.20845f","313660dc.b0e4e","26f92174.9bef6e"]]},{"id":"810b0ec.20845f","type":"mqtt out","z":"aaa2f6a8.167508","name":"","topic":"RETURN","qos":"","retain":"","broker":"fb44c7e.d7ff038","x":700,"y":220,"wires":[]},{"id":"fb44c7e.d7ff038","type":"mqtt-broker","z":"","name":"ESP32CAM_MQTT_01","broker":"192.168.0.102","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"5","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

There may be a way with the join node but to get you Moving...

If you set the join node to return an array you can use a function node and the array join function...

msg.payload = msg.payload.join("");
return msg;

[{"id":"e4c8f37e.e68bf","type":"mqtt in","z":"83586cc2.a740b","name":"","topic":"PICTURE","qos":"2","datatype":"auto","broker":"d8f5182d.3296f8","x":680,"y":260,"wires":[["8f9355f.de3b6a8","ab2fae17.d62bc"]]},{"id":"8f9355f.de3b6a8","type":"debug","z":"83586cc2.a740b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":690,"y":320,"wires":[]},{"id":"ab2fae17.d62bc","type":"join","z":"83586cc2.a740b","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"","joinerType":"str","accumulate":false,"timeout":"5","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":910,"y":260,"wires":[["eac5aa92.3bfa88","1a8e17de.257778","34cfbe74.8a22a2"]]},{"id":"eac5aa92.3bfa88","type":"mqtt out","z":"83586cc2.a740b","name":"","topic":"RETURN","qos":"","retain":"","broker":"d8f5182d.3296f8","x":1080,"y":200,"wires":[]},{"id":"1a8e17de.257778","type":"function","z":"83586cc2.a740b","name":"","func":"msg.payload = msg.payload.join(\"\");\nreturn msg;","outputs":1,"noerr":0,"x":1090,"y":260,"wires":[["bb42a927.ae2ee8"]]},{"id":"f9235532.ebf288","type":"inject","z":"83586cc2.a740b","name":"","topic":"","payload":"abc","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":690,"y":100,"wires":[["9f60da6a.6aad28"]]},{"id":"ccc06cfb.87e3a","type":"inject","z":"83586cc2.a740b","name":"","topic":"","payload":"123","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":690,"y":140,"wires":[["9f60da6a.6aad28"]]},{"id":"bcfa9365.1497","type":"inject","z":"83586cc2.a740b","name":"","topic":"","payload":"xyz","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":690,"y":180,"wires":[["9f60da6a.6aad28"]]},{"id":"9f60da6a.6aad28","type":"mqtt out","z":"83586cc2.a740b","name":"","topic":"PICTURE","qos":"","retain":"","broker":"d8f5182d.3296f8","x":920,"y":100,"wires":[]},{"id":"bb42a927.ae2ee8","type":"debug","z":"83586cc2.a740b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":1250,"y":260,"wires":[]},{"id":"34cfbe74.8a22a2","type":"debug","z":"83586cc2.a740b","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","x":930,"y":320,"wires":[]},{"id":"d8f5182d.3296f8","type":"mqtt-broker","z":"","name":"ESP32CAM_MQTT_01","broker":"192.168.0.102","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"5","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]
1 Like

Thank's @Steve-Mcl for u fast response.
Your example works very well, but when I send the chunks to the topic PICTURE it apparently works if you just look at the debugger.
See the print below:

So, if I monitor the topic RETURN through the mosquitto in cmd I get a result that seems to be the same as the debugger.

It seems to be all right, but if you copy the data to the clipboard and paste it into Office Word using show everything, you can see that between each chunk there is a line break.

It looks as if the incoming message from MQTT must have a newline on the end. You can't see that in the debug as the string is too long, so feed the MQTT into a function node that extracts the last 10 characters from the string and feed that to a debug to see what is there.

1 Like

I think the node-red-node-base64 node ignores whitespace so should handle that case just fine and convert it back to a buffer for you.

1 Like

Hi @dceejay, tanks for your help.

Putting base64 node I get this:

odd - can you share the full output from the debug node just before the base64 node - you may need to set debug to send to console to see the full value and copy/paste it from there.

1 Like
/9j/4AAQSkZJRgABAQEAAAAAAAD/2wBDAAoHCAkIBgoJCAkLCwoMDxkQDw4ODx8WFxIZJCAmJiQgIyIoLToxKCs2KyIjMkQzNjs9QEFAJzBHTEY/Szo/QD7/2wBDAQsLCw8NDx0QEB0+KSMpPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj7/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/wAARCADwAUADASEAAhEBAxEB/9oADAMBAAIRAxEAPwDyhtuehox8vetNtxcnYTABzTsflWcuW49Rqqp7cU4AelGiB6CfL6UcU4lBikIGab0JFNG0Z6Uh8ugnGeKWgAwvpSYp9Rb7htHaihsbXQSlpabhYTgmjaM02ITbzRSVgFAzywo49KJdx3G4GOlHfpS3ATbjpS8U2gtoJSYoWhNm...

I can't configure debug to get all.

But if I take the payload data via cmd in the mosquitto and paste it into Office Word showing everything, pilcrow sign appears.

You need to set it to send to console. Then copy/paste from the console log .

1 Like

Got it! I'll do it soon.

Microsoft Windows [versĂŁo 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Todos os direitos reservados.

C:\Users\aieser.santos>node-red
18 Sep 11:46:47 - [info]

Welcome to Node-RED
===================

18 Sep 11:46:47 - [info] Node-RED version: v1.1.3
18 Sep 11:46:47 - [info] Node.js  version: v12.18.3
18 Sep 11:46:47 - [info] Windows_NT 6.1.7601 x64 LE
18 Sep 11:46:50 - [info] Loading palette nodes
18 Sep 11:47:07 - [info] Dashboard version 2.23.2 started at /ui
18 Sep 11:47:07 - [info] Settings file  : \Users\aieser.santos\.node-red\setting
s.js
18 Sep 11:47:07 - [info] Context store  : 'default' [module=memory]
18 Sep 11:47:07 - [info] User directory : \Users\aieser.santos\.node-red
18 Sep 11:47:07 - [warn] Projects disabled : editorTheme.projects.enabled=false
18 Sep 11:47:07 - [info] Flows file     : \Users\aieser.santos\.node-red\flows_A
COM201.json
18 Sep 11:47:07 - [info] Server now running at http://127.0.0.1:1880/
18 Sep 11:47:07 - [warn]

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

18 Sep 11:47:07 - [info] Starting flows
18 Sep 11:47:07 - [info] Started flows
18 Sep 11:47:07 - [info] [mqtt-broker:ESP32CAM_MQTT_01] Connected to broker: mqt
t://192.168.0.102:1883
18 Sep 11:47:07 - [info] [mqtt-broker:ESP32CAM_MQTT_01] Connected to broker: mqt
t://192.168.0.102:1883
18 Sep 11:47:18 - [error] [base64:35f80a71.2e27b6] Invalid Base64 string
18 Sep 11:47:18 - [info] [debug:d34326f2.7cada8] /9j/4AAQSkZJRgABAQEAAAAAAAD/2wB
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9j/4AAQSkZJRgABAQEAAAAAAAD/
2wBDAAoHCAkIBgoJCAkLCwoMDxkQDw4ODx8WFxIZJCAmJiQgIyIoLToxKCs2KyIjMkQzNjs9QEFAJzBH
TEY/Szo/QD7/2wBDAQsLCw8NDx0QEB0+KSMpPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+Pj4+Pj4+Pj7/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMD
AgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygp
KjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOk
paanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQAD
AQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFR
B2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZ
WmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfI
ycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/wAARCADwAUADASEAAhEBAxEB/9oADAMBAAIRAxEA
PwDikYL/AACrCybh91fyrVsm19zV0vQrzVW/0a1dwp+YqOlT6t4VfTYfOuF2Y+8pNGhLVjmXjj8zGK3d
Js02+ZJCM9s0FWH6lDCsX3VFaXhbwpHdRLd3cWQeVTNZyl0LUep2kGl2UAx5Ma1O0Nog4RKSQzOuvJ7R
riqG+IN9xaGPlLkMkX/PNKuxGBv+WaVI+QseVF/zzWjZCf8AlmlUg5RrJF/zySoHEQ/5ZrQLlK7+V/zz
Wq8nlf3FoDlMu/EeM7Frm9UVCgO0cGjqDjoYdxEvDbapOFH8NbIzcSAr600gUmMYVFNpALtpdoo0EGBS
YFAw4FHFFgsJgVLageevGaAsbl0IzCAFFYcyjJxU9CLEG0Um3NIo2t4qaGUBqqwI7nwZ4lOlNPi0luEn
C52npWP4q1u91q8aWbEMX/PNa1slqT1MO2jDzDIzXUqwS3zWbLMi6kM91HHnhmA6V6V4fKiFUrKW5olo
dC+kQXCAsX/A4rH1LQWjRjaTy59H5q0rhc5idp4JvKnGDVWU4bNRYq5NFPV2GakM1IJ8pzTjLzQIYZ+a
rvLTArPLVWaakBnXMvy1iXzfujQgIb2yKaVY3fzeXMNre7VhXMexq0vchorGoqZA3NJimgFopMTCjNKw
xtFMBDmnQkrKDTA1HmylZ0nJqAIqSgNjYqaHrWnUDqWlUaWEGAa564b5qt7GYls375frWzcTbIsCs2aG
baPu1OPPPevRdBn+7WUtzZbHf2b7oBU5UN1FVHcyZzXi/TY57Lz0X97H6VwRO6OnULjew1GxVmJ6go0b
aXmpnkoArtJUTS0CK7yVUlkpDKUz1mSqZpkjXq7YoA6vWdPz8NLcxR8WeyTIFcDccjmqQjLkG01Casxe
43HrS0DCl4oAbmkzSAOaTmmIOaShjLKNlKiaoAjppp3Ea2akjPzVaE2bK3O62x3rOc5PNaMB1v8Afqe5
lNQUtyCzf/TVNd5ok+GFYz0Zutj0LSbgZ2k8MtaUsqoua0h3MZIxr+bzbVwfSvN3+SaRfeioXDsRbvmq
aNsVkWWVkqYy4piIWm4qu01AEMlxVWSbNAFWWQ4xVzw5p0mra/BapwF/eSMewpsR6Jr9iv8AwhOo2vJx
bvgn8a8Rd90Sv6jNEfhJKMnWoDVkDaKYhcUbCe1Kwx3lmlEdOwBso2UhCeV71IIBj1pjI8FWxjFNdTUi
IqbSS7j6mtTkp9Qepbjc4ph+/VvYViZODTJDnOKBkFu2LxSa7LSJsYzWU9zWnsdxY3W1Eb0rTmvwYqcC
WjAv9R8oHmuVOWdnPenJjiRN96l3VLLH+ftFRveUiSBruoGu/emhEJuTTDNmgdxAc16L8OdN8nSbzU5M
/wCk/Kgz/AtKWgHS+Ihs8O6nJ2+zt/Kvn+zt5b6e1tLaPzJpsKiepxVIm5Hf209ndy2t3A8FxEcOj9qo
sKsgbjmjFADxwKdmi9gOk0zw6JIpV1GZoJWwY/L+bFNk8JXi/wCpv7OT2YOtc3t9RGbc6PqVo+2azdv9
qH5xVb7LdY3fY7nb6+Ua3UkwTK7ZU/Mjr9UIpnnqp+9TuA/7VC339n1p/nQFfvCpdmFhmYz6UpEfoKgC
bvSg1sA8OaeDQw6F63VvKJI+lR/Z5GfaMAe5pXENbT25y8f61r6bP5TKkhH1qHqaxZ2+mv50GFdfzq01
tPt/eXK7f9miI2Z11Dbr/tn1Y1mTNEOlAilLKoqpJdKKLDRRkv8ALcIcetQyTylcoRTSEyv9pf8Aip6s
z96YiYIT1qULUlmno2lnU7wRORHb/wDLSQg4+lev2xs0iSOOeIRRgBR04peYeRmeM5xdeG5rGymhee8Y
W6/OMLnvXlfhSCO3+JFnCH3xWkjsZAh52r1pqS2MpGPrN8dV1a81Jznz5mcdfu/w1kOc1r5CG0lSMXFX
dHtReapHA20IAZDlsZx2qJ6RC56RZRSR2+6QctRI2OlcjER/aJF+6cUn2uX+8fzqLCsH26X1qNrgP9+O
NvqtSSRt9mb71nb/APfFMKWR/wCXK2/791V2BE1ppzdbC3/75pv2HTe1nCPwo5n3AwDoV6fuRq3+69RN
o9/H96yl/DmvUaHoJHZTf8+0v/fJqzFazYz9nm/74qGMspbnb/qHP1WpAAh+aAH2akA/y1c5EYFXILeL
+O3X6mpZUTWsLBf7rAH0arsunnZxPcf99UJlu5mzaZu+/czr9MVSuNMYL+7nlc+hWgLlFrCZeqn8qiFi
W6dfSi4hDpU38SFai+xSniJN/wDu07iK50+7/wCfSb/viiGEqdrjY3o1NjLYhbrlT9KPLYVI7nTeG9Q2
BYDgMOwrvIW+U+gqWNGD45uQvhiZQF3SOFWvLX+Rvlyp9quO1iWVi5HC1GzluDiqaII/lP8AAKXZF/zy
FLVDDyo8fdo+y7h/qyaOYNS1a6rqNooW1u5kQfwE7hWpD4jvduJoIZj6/drGULiLv9rNt3S2bKP9ls00
a1ZlsN5ifUVhyPoBYS8t5PuyrTvMT1rOxIBlP8S/nS8+lAhuaTNAFjdtpwua9bmuJkv2knuaT7Xt9fwq
R2AahnjGaRsyrnC0WAiCLuwY1q/bqMcRipaNIm1aY2cpV3YhWpRRSnhQ9aqG2iPrTsSQSacrfdlYfhUD
aXIOVk3fhU2AiexvgpPlmqW2VT9z/wAdoAcZZP41NH2gf88Q/wBaY7CL5MjYeL9aWa0gHQSj6mpuBJZ6
dAx3i6kDDtsFdJYYjhI3Pn1BxUlXsYvip3uPJtklLBTuZZXrm59P3x/Isav3O+rjoS2ZrWcm7iBn/wB2
k+xSH/lxlH4mqbF0EuIPK5SGZP8AepLa2kuOR8qf3jR0BIsG2MA3na2O7CmW8n2qRk3L9KjpcRe/s5gu
fs8T1G1gpPMSpWfMxDXs49nD4NRrp3cMKnn6BcmW12c7OfaoZnkKlSD+VJ2EVGhPXmkBmX7ryfnTGS/a
r1R8szH60n9pXw+8Fo5EI639yeoqXybc/wAGa6CSVIY+yVHLbGThRigREmlOv8YqVrF+0gFPmKQwxbe+
av2K7mApNmiOgt0VcBq0NsRXinEZVmhibOazGt2UnbVXEVyzqaYZJe2akAWaYr838qrhpIpd8XBqSrE4
u7jb86Bv+A1AbjD5MKflSsIimud/HlqPpR5ylMMKLAQhYM/fIrQs1WN8rcFlpiuZOsJ5t/LPv3bqziEP
WrE2NI29BVm1gkn6Rtt7mpEXorFIm3Y/OoL28ijzFFEhOPSoXvSGzDnlzw2DToLuOIf8e6k+oraUSDUi
uAeMVIxjk/hrnsMabC1I+bP4GoGtLdf9Wz/jUgPhhG7/AFv6VNLacZHzUcoFQ2PmdQB+FV59JIHyyClZ
oCn/AGTcZ+WQU1tPuk6qGquYDbU81oW3A5rdiLO/0qFpWpCtqCyse9OZsjrRYog/irUsh8wpMuJ1emhG
I3qDWi6W2P8AVihDMe/8uMErWMb1hQ0Ir/aNzciplnH92lYZLFMu7lRirDrGwyFFBRUkz/dqlKu48imI
rvFUTR0CIStTwsUjxTEVLljUdukjtxEfqRVNqxBe+x+uKnM/kpzWTGjOu7+RiFTAWqnko5y1aQ0Eys9j
GxJ8zFRfYEx/rT+VVcQC0Zj8sh/OrMfmRfKzbhUuNxkpmGKi8zNRyCHpIoqwl04HFAhPtJ9qikl307jB
HFLLOgHAqXEBQtWFJArUZPE1NfrTYhoqZelIoCMGtSw7VDLR0NrLtFTTXPHWmgZlXbmUYqk1s+OlIBq2
/rS+XinYLkkcZ9KlAkWlYYnmHutJlCeRRYYjRxt2qCa0Aj3UWJM1ouab5EjfdoEyWO12nMnNSk+lDYit
cXQj+tZlxNNJ34oihMqjfv6VpRmIr8wFNiKtykI+6BUSxRuvP86WohGg2/dJqJ4ZO1VdiI/n7ilHHarA
eGqQMMUhibhSVDRI/cBTSQaXKBd2kUtWWTQ/eq7PEvbmmBX8upFSpKHbau20gWpYy+s9OaQnvQVYgYmp
o7j5cNRcB6MrVKI0NVcRMoRak3R46UDIW8s1BIq9qBEQXFPkHmRbam4MzzbAGncKOKVxFeQ96pSSFuFp
IRVa1kbmq8sEorVMkr4kXtTt7elMCKTd6UwMw7GmA4ytSC4PemIDNntRuosSJkVEXpFEfmYpPtOKW5Nh
fP3U7fVAb1KFrM0Jo4qt4+Wi4yOm5xSGANOBpATLJiplmoAf5tG4GkUTpVhaRRJTTVAMoyT0pCJ0iPen
SKFWoEUJPmqrJ8lMkzp5s8Cqyt5ZyRVkkwvFqNrhXosSPjQNQbXNFxjhbgVFPEmKFqBSMFQNBWlgI/Lp
CBTsITFRstSBEY6iMNKwhyxYqXbigDs1s19KsJYLUNmhZSyX0pJLQClzAUZYMVWaNqoCPY1TpCxoAsC2
PpS/Z2FIZG0bCm/NQBZgNX42pMosZGKhkpACJu61bjjC0FAz46VBI3HNQIoyyYrNnZpKuKIZVSE+Z81S
3EQ8rirZJkMpzUXzDpVCLMdwV7VOl8KloRKbkMODVd3zREYzdTSRWoETDNQlKoVxNtNKZqRDClQ7aBiE
EVGSc01qQehrJVhZxWJsP+01G1xmpsA3hqaYRTFcj8oVPFgUmMvR7KkZEIqRlWSBTRHZj0pjRKLEVILI
1HMMPs2KTy/WquMeBig5NIBPLqpODQgM2SNyai8ph1FaIgay1BJuIxigRX8ij7P7UXERyRD0qo64NNAI
KkBqiQzTGqgGU1qYDKac0XGRlqSkIQ03ZVCOw3EUvmmsTUUS09TTQFmOpqUiLEbiqrGQGkBLHPIKsi5P
eixY5ZeatQzUmMvRNVgNWbKApmomgNFwGGPFMGM0AS4FQyRCgCuYRUZtl9KCSrcQqFrMkXmrQiMLT9lA
DGizVOa0ouKxUeDbURVqtMTEKtTCGrS6ECq2aspF61LYhWtxUTQVHMNlZ4sVDtxVcxI00oqriudfTcVJ
sMPFOVqALMbVZTJoAspDmn/ZRUXAjNsKjaGlcBojq1EuKLgXYzUwas2UixG+BSSXCihFFOafNVPNOa0S
ESCY1FLcEU7CKxvKb9t96OUkgmutwqg7807Ejd9P84UcoXHCUU1zkVNrDuU5RUG2qELik2ikMNoFSqVF
K4rCM4qF3FSIpysKqOapCGVLHVMDrqMUzQQpmlWE0AWI48VaTihgWUkAp/nVmIaZM0w1IDacpoAmR6sq
4xUFjZJsVTeUk1rFAA5pcYrQY3NVpzQBnytiqzS1VjMjM1M8zNBIbqTNMCRal7VDAjdagZakZGaaWxSA
jaWozcUDGNP6VAzmmokkDsaiLGq5RArVKr0coI7QVIqZoNCYJUmBQAwkCm+ZSAXfT13UhE4Bp1QA0ioy
cUDASYqQT0WKEMuaQcmtEBOtIxpgR1BLQBQmFU3FUQyuwplUIWjNIBQ+2pxNSZIvmUwsDWdhkZqMrSAh
darstUgI9tNIq0K5EVqMrVCE20baYjukFTBsVibDvMppegBvWl2UxEqJVhFrNsZOBS4qBkMlVWpoRHUi
oa2KJglOxigYtJmgQ3NRvQBSlqqwqiCFlqErTJG4pDQOw2koAQk0m40iQ3mk8ypAazZqE0DGUw1YiJqa
aBCYpKYrHahqdnNZGwoFSpGTQBYWGneXSuIb0p4apYx3mUnnVNhjDJTM1aQxVFTLViHUmaAG5ppoAYTU
bGgRXeoGFMRCwqE0wI6YaBDaSgApMUCGGmGgBhptAiM0w0wGUygAptFhnceXUixk1kUWY4KuJBUsZL5V
NZKm4Fd1xVZmpgQM9R+ZVgOD08NTAkDU8SUwDzKb5lACeZSb6YDS9MLUgGE1C1MRC1RNTERUygBtJQAl
FIQ01G1AEZplMCM1GaYDaaaYhppKTA9H8qpUjrEssIBU64qGMk4qKQipAozvWdK9aICsWpAa0ESA08NQ
Mdupd1ACbqTdTAM0m6gQm6jNADCaYaAImqI0CIzTKYDaSgBKKQhhNRk0CIjTDQMYajNMQym5pgJRTBHq
hWm1zFibqXzcUhjDce9QyXPvRYCnNPVKSWtESR5p4qxj807NIY7NLmgQ3NGaBi5pKYhKBSAKYaYERFRm
mIYaYRSAZTaAEopARtURpkkZphNAyMmoyaYDKSgQtKKBHqJNQuaxRZVeXFQm4oGRPcVAZqoCJpM1HVIQ
4U/NMYuadmkA7NGaYCUtADqQ0hBRTGOphoERmozQBGaYaAGGmUCEopARNURpgRmojTAjNRk0wGUmaZIo
NTLUgelsaryPWKLKEzVQkfmqsNEXmUu6qsAop1UIWlpDFp4oAkxRikIaaTNMY7NFAhaKBi02mIjNRGkB
GTUZNADKTNACZpM0CImqImgRGaiNMZETUTUCG0ZqmITdUytSA9JkNUpmrAsozPVJmzWiEIKeKYySjNAg
pRTGSquasxx1LAnEVO8moGQPFVdlxTuAzNOzVCFzTqYBUZNAEZNRsaoRCxqMmpAbupuaAEJpM0CImamE
0wIyaiagZCxqMmmIZnmkJ5piCnA0hnpbvVKY1gMozVVrRAhwFPpjFpM0xBViNKQFuKOrscdRIZaSKnGO
swK8kdUZkpoCm4pma1QDxTxVCA1E1AEbGoWNAELGmZoAjJpuaAEzRmkBCxqPNUSIaiY80DImNRGgQ3NJ
miwCZpwNMZ6JI1VnNY2GVZOahIqhi06qEFNpDJo1q7EtJiL0SVcjWsmMsqKcRUAVpRWfNQgM+Wq3et0B
KKeKoQGonpgVmaoiaAI2NRE0AMJpuaYgoJ4pCK7HmmZoAaWqImqAiLUzNADc03NAxacKAPQWaojWQyJh
UDUANp1UMSkFMC3EKvRCpkIvRCra1iwH5p26pGV5mrOnNNAZ8xqt3reIidBmnmqEMNV5GpgVWaoy1IZG
WqMtTEJmm5oENzQTSAgeot3NMYwmoy1MCImkJoENzSUhhmlBpgf/2Q==

Hi thanks for that... for some reason that string has more than one thing in it...
The first part goes up to Bpgf/2Q==
If I split into 2 then they do both decode ok as
image
so you need to ensure only one arrive at a time

1 Like

I didn't really realize it, I will analyze my code better. Thank you!

It worked! The problem was my code on ESP32-CAM that was not passing the chunks correctly.
The flow sent by @Steve-Mcl works very well.

Thanks @Steve-Mcl, @Colin and @dceejay :clap: :raised_hands: :pray:

1 Like