public async Task <IActionResult> DeleteConfirmed(long id)
        {
            SQLFile sQLFile = await _sqlcontext.SQLFile.SingleAsync(m => m.FileId == id);

            SQLFileContent sQLCont = await _sqlcontext.SQLFileContent.SingleAsync(m => m.SQLFileId == sQLFile.FileId);

            _sqlcontext.SQLFileContent.Remove(sQLCont);
            _sqlcontext.SQLFile.Remove(sQLFile);
            await _sqlcontext.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Пример #2
0
        public async Task Remove(IList <IFormFile> UploadFiles)
        {
            IFormFile file     = UploadFiles[0];
            string    filename = ContentDispositionHeaderValue
                                 .Parse(file.ContentDisposition)
                                 .FileName
                                 .Trim('"');

            string nameonly = Path.GetFileNameWithoutExtension(filename);
            string extonly  = Path.GetExtension(filename);
            string fname    = nameonly + extonly;

            SQLFile x = await _db.SQLFile.SingleOrDefaultAsync(p => p.FileName == fname);

            if (x == null)
            {
                return;
            }

            SQLFileContent y = await _db.SQLFileContent.SingleOrDefaultAsync(p => p.SQLFileId == x.FileId);

            _db.SQLFileContent.Remove(y);
            await _db.SaveChangesAsync();

            _db.SQLFile.Remove(x);
            await _db.SaveChangesAsync();

            Response.Clear();
            Response.StatusCode = 200;
            Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = "File removed successfully";


            //try
            //{
            //    var filename = hostingEnv.ContentRootPath + $@"\{UploadFiles[0].FileName}";
            //    if (System.IO.File.Exists(filename))
            //    {
            //        System.IO.File.Delete(filename);
            //    }
            //}
            //catch (Exception e)
            //{
            //    Response.Clear();
            //    Response.StatusCode = 200;
            //    Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "File removed successfully";
            //    Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = e.Message;
            //}
        }
        public async Task <IActionResult> Create(SQLFile sQLFile, IFormFile file)
        {
            long retId = 0;

            string fname = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.ToString().Trim('"');

            string nameonly = Path.GetFileNameWithoutExtension(fname);
            string extonly  = Path.GetExtension(fname);


            // ReSharper disable once ConditionIsAlwaysTrueOrFalse
#pragma warning disable 162
            if (true || ModelState.IsValid)
#pragma warning restore 162
            {
                try
                {
                    if (file.Length > 0 && file.Length < 0x7FFFFFFF)
                    {
                        if (!file.ContentType.StartsWith("image") && !User.IsInRole("Admin"))
                        {
                            return(RedirectToAction("Index"));
                        }

                        SQLFileContent content = new SQLFileContent {
                            Content = new byte[file.Length]
                        };
                        using (Stream reader = file.OpenReadStream())
                        {
                            int x = await reader.ReadAsync(content.Content, 0, (int)file.Length);

                            if (x != file.Length)
                            {
                                return(RedirectToAction("Index"));
                            }
                        }

                        sQLFile.ContentType = file.ContentType;
                        sQLFile.Contributor = User.Identity.Name;
                        sQLFile.FileName    = fname;

                        _sqlcontext.SQLFile.Add(sQLFile);
                        await _sqlcontext.SaveChangesAsync();

                        retId = sQLFile.FileId;

                        content.SQLFileId = retId;
                        _sqlcontext.SQLFileContent.Add(content);
                        await _sqlcontext.SaveChangesAsync();

                        retId = content.SQLFileId;

                        fname            = nameonly + "." + retId + extonly;
                        sQLFile.FileName = fname;
                        _sqlcontext.Entry(sQLFile).State = EntityState.Modified;
                        await _sqlcontext.SaveChangesAsync();
                    }
                    else
                    {
                        return(RedirectToAction("Index"));
                    }
                }
                catch (Exception)
                {
                    //string meg = ex.Message;
                    //Log the error (uncomment dex variable name and add a line here to write a log.
                    ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists see your system administrator.");
                }

                if (retId < 1)
                {
                    return(RedirectToAction("Index"));
                }



                return(RedirectToAction("Index"));
            }

            // ReSharper disable once HeuristicUnreachableCode
#pragma warning disable 162
            return(RedirectToAction("Index"));

#pragma warning restore 162
        }
Пример #4
0
        public async Task Save(IList <IFormFile> UploadFiles)
        {
            try
            {
                foreach (IFormFile file in UploadFiles)
                {
                    var filename = ContentDispositionHeaderValue
                                   .Parse(file.ContentDisposition)
                                   .FileName
                                   .Trim('"');

                    string nameonly = Path.GetFileNameWithoutExtension(filename);
                    string extonly  = Path.GetExtension(filename);
                    string fname    = nameonly + extonly;

                    SQLFile x = await _db.SQLFile.SingleOrDefaultAsync(p => p.FileName == fname);

                    if (x != null) // already exists
                    {
                        Response.Clear();
                        Response.StatusCode = 409;
                        Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = "File already exists";
                        return;
                    }

                    SQLFile        SqlFile        = new SQLFile();
                    SQLFileContent SqlFileContent = new SQLFileContent {
                        Content = new byte[file.Length]
                    };
                    using (Stream reader = file.OpenReadStream())
                    {
                        int xx = await reader.ReadAsync(SqlFileContent.Content, 0, (int)file.Length);

                        if (xx != file.Length)
                        {
                            Response.Clear();
                            Response.StatusCode = 204;
                            Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = "File failed to upload";
                            return;
                        }
                    }

                    SqlFile.ContentType = file.ContentType;
                    SqlFile.Contributor = "unknown";
                    SqlFile.FileName    = filename;

                    _db.SQLFile.Add(SqlFile);
                    await _db.SaveChangesAsync();

                    long retId = SqlFile.FileId;

                    SqlFileContent.SQLFileId = retId;
                    _db.SQLFileContent.Add(SqlFileContent);
                    await _db.SaveChangesAsync();

                    retId = SqlFileContent.SQLFileId;

                    SqlFile.FileName         = fname;
                    _db.Entry(SqlFile).State = EntityState.Modified;
                    await _db.SaveChangesAsync();


                    //filename = hostingEnv.ContentRootPath + "\\wwwroot" + $@"\{filename}";
                    //if (!System.IO.File.Exists(filename))
                    //{
                    //    using (FileStream fs = System.IO.File.Create(filename))
                    //    {
                    //        file.CopyTo(fs);
                    //        fs.Flush();
                    //    }
                    //}
                }
            }
            catch (Exception e)
            {
                Response.Clear();
                Response.StatusCode = 204;
                Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = "File failed to upload";
                Response.HttpContext.Features.Get <IHttpResponseFeature>().ReasonPhrase = e.Message;
            }
        }