Odoo files store
Default since odoo 11 may be 10
By default, starting from version 11 of the odoo, all files are stored on the server's FILE SYSTEM. The database stores only the names of the files and files path. The files are hashed by the sha-512 algorithm, which is why we see such incomprehensible names on the server disk, this is necessary for deduplication (if we upload the same file, the odoo will save it once.)
Store
But if we add an extension to such files for example .jpg and try to open file from disk then they will open successfully. Naturally, if the file itself is jpg, then the extension must be selected from the content of the file or mimetype
Why base64
base64 on server and client
But then why do we always encrypt to base64 first and then decrypt?
It can be related with import, export odoo feature. Because we export file from odoo it export like base64 string inside (csv, xlsx) but in general, it's a bit strange, because if we migrate, we'll just transfer the entire store file and won't export binary files. Although it may be convenient for some kind of partial export/import...
Also this is due to the fact that in web technologies, for example, on an html page, you can display an image not only with a url, but also with base64 data. For example, in the img tag, we can not specify the url of the image, but specify the image itself in base64 and it will be displayed.
This is how the standard image widget in odoo works.
When we upload an image, we actually read it in base64 and then add this code to the Img tag. And the picture is displayed as if we uploaded it, in fact everything happened locally. And even the picture was not transmitted over the network. But when we click the save button, then the picture will go to the server
Also, what do the odoo developers themselves tell us about this and why does the odoo orm also send files in base64 screenshot: