Isn't it a lot easier to upload files using multipart/form-data? I think that using base64 is a lot of unnecessary logic.
Yo! Thanks for your comment. 🙇♂️
I think it heavily depends on the architecture of your app.
In our case here, the app doesn't really have a form in the first place, so all the data is gathered from the component state and sent as a JSON to the API, therefore we're not actually submitting a form.
Also, on the backend, files are not stored in the hard-disk but in the database as base64 strings alongside many other meta-information which are used later on.
You don't need a form to accept multipart data. It's a common pattern to use it in API's.
Also, storing files as base64 strings in a database is a bad idea as again you have this unnecessary encoding/decoding overhead. Why not just store the data as binary data blobs?
I just think that using base64 for that is just a performance waste for your API and your API clients.
Sounds like a point! 🙂Tbh, I couldn't find a consensus about what would be the best-practice for that, so I'm curious about how would you do it. Would you mind to give me an example?
I took example from the Google Drive API. You can easily send files + metadata (even as JSON!) without any encoding/decoding and you have binary data right in your API.
According to storing files in database as base64 strings, take a look here.
What do you think about that? 😃 I think you can gain a lot of performance this way.
Not really sure about the real benefit of not using base64 as a transport wrapper when posting data to the API (in my particular scenario) , but I’m definitely convinced of the advantages of storing the binary instead.
Thanks a lot for the contribution. 🙌 I’ll take the opportunity with a new project here and try this approach out.
Yeah I don't mean that your approach is wrong, it will surely work! I just wanted to propose a better approach 😃
Sure, I didn’t take it wrong! 😉 It’s awesome have the chance to see what other devs would do to solve situations we’ve faced before. 🤘 Really glad you’ve commented.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.