I will save you money
Open Source using free components or native .Net code
HTML5 CSS3 ASP.NET ASP Core with backward compatibility
Can be authorized by .Net Identity
Gallery page spec
Mobile first: Responsive
When you upload an image you first create a new record, if you want to implement my naming strategy i.e. you save the record and get the table id.
It is easy to do but requires a new model containing a field of type IformFile or HTTPUploadedFileBase
Uploading is a synchronous operation. There's a workflow chain in which each step relies on the operation before. I did consider asynchronous calls in one part of processing, resizing. Perhaps you might want to generate new threads if you resize multiple times but I haven't bothered building that in. Conventional wisdom is offloading long running tasks is not scalable, it only reduced the number of available threads so it's your call which approach suits you. The question is, where's your latency?
Here's your server workflow
- save info the Photo table in the database
- Save the image in your file system
- conduct image processing: optionally watermark, resize/generate thumbs, save metadata (Exif/IPTC)
- Return visual confirmation to the client displayed on Razor page in rich, responsive photo library format