public JsonResult DeleteFile(string id)
        {
            if (String.IsNullOrEmpty(id))
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return(Json(new { Result = "Error" }));
            }
            try
            {
                Guid        guid       = new Guid(id);
                BlobSummary fileDetail = _context.BlobSummary.Find(guid);
                if (fileDetail == null)
                {
                    Response.StatusCode = (int)HttpStatusCode.NotFound;
                    return(Json(new { Result = "Error" }));
                }

                //Remove from database
                _context.BlobSummary.Remove(fileDetail);
                _context.SaveChanges();

                return(Json(new { Result = "OK" }));
            }
            catch (Exception ex)
            {
                return(Json(new { Result = "ERROR", ex.Message }));
            }
        }
        public async Task <IActionResult> Edit(FileDetail detail)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    List <BlobSummary> Blobs = new List <BlobSummary>();

                    for (int i = 0; i < Request.Form.Files.Count; i++)
                    {
                        var file = Request.Form.Files[i];

                        if (file != null)
                        {
                            var fileName = Path.GetFileName(file.FileName);

                            BlobSummary summary = new BlobSummary()
                            {
                                FileName    = fileName,
                                Extension   = Path.GetExtension(fileName),
                                Id          = Guid.NewGuid(),
                                Blob        = GenerateBlob(file),
                                ContentType = Request.Form.Files[i].ContentType
                            };
                            Blobs.Add(summary);
                            _context.Entry(summary).State = EntityState.Added;
                        }
                    }

                    detail.Modified = DateTime.Now;
                    detail.Blobs    = Blobs;
                    //  _context.Entry(detail).State = EntityState.Modified;
                    _context.Update(detail);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FileDetailExists(detail.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
            }
            return(View(detail));
        }
        public async Task <IActionResult> Create(FileDetail detail)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    List <BlobSummary> fileDetails = new List <BlobSummary>();
                    for (int i = 0; i < Request.Form.Files.Count; i++)
                    {
                        var file = Request.Form.Files[i];

                        if (file != null)
                        {
                            var fileName = Path.GetFileName(file.FileName);

                            BlobSummary fileDetail = new BlobSummary()
                            {
                                FileName    = fileName,
                                Extension   = Path.GetExtension(fileName),
                                Id          = Guid.NewGuid(),
                                Blob        = GenerateBlob(file),
                                ContentType = Request.Form.Files[i].ContentType
                            };
                            fileDetails.Add(fileDetail);
                        }
                    }

                    detail.Modified = DateTime.Now;
                    detail.Blobs    = fileDetails;

                    _context.FileDetail.Add(detail);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(detail));
        }
        public IActionResult Download(String id, String fileName)
        {
            BlobSummary val = null;

            if (!string.IsNullOrEmpty(id))
            {
                val = _context.BlobSummary.Where(x => x.Id == Guid.Parse(id)).FirstOrDefault();
            }

            var content = new MemoryStream(val.Blob);

            return(File(content, val.ContentType, fileName));


            //Response.Clear();
            //Response.Buffer = true;
            //Response.Charset = "";
            //Response.Cache.SetCacheability(HttpCacheability.NoCache);
            //Response.ContentType = val.ContentType;
            //Response.AppendHeader("Content-Disposition", "attachment; filename=" + d);
            //Response.BinaryWrite(val.Blob);
            //Response.Flush();
            //Response.End();
        }