I implemented uploading files with www.ibgib.com (GitHub), and I simply made a
/files folder where I store the images. I actually get a sha-256 hash of the image data to both avoid duplicating content, as well as providing unique filenames. In your database, you can simply store this hash.
My (non-ARC) upload code starts here, with the saving-specific code here. It also creates a thumbnail in there if you're interested, but if you use ARC (which was a little complicated/overkill for me) then the implementation details would be different for you.
In the off chance that you use Docker when deploying it, you can set it up as a persistent volume as in my
docker-compose.yml. This makes it so that when you re-up the web server docker image, the volume persists. (Be sure to read up on the volume documentation for this )
As for cheap, there is an AWS free tier if you aren't aware. It ends up being free for a year anyway, during which time you could maybe find somewhere else to host it.