Depending on image sizes, use cases, etc., I would probably save the images in S3.
You can save the S3 path as a database field. You can create a bucket as a domain name (for example, images.example.com) and specify a CNAME in the bucket to get direct access to the images. You can also use various S3 libraries to generate expired URLs if you want to enable security.
source share