Esempio n. 1
0
        public async Task <IActionResult> AddRelease(int?id, [Bind("Name", "Notes", "PreRelease")] DatapackVersionModel Release, IFormFile file)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var datapackModel = _context.Datapacks.Where(m => m.Id == id).Include(x => x.Author).Include(x => x.Versions).Single();

            if (datapackModel == null)
            {
                return(NotFound());
            }
            if (datapackModel.Author != await _userManager.GetUserAsync(User))
            {
                return(Forbid());
            }

            if (!Directory.Exists("./Zips/"))
            {
                Directory.CreateDirectory("./Zips");
            }

            if (file != null)
            {
                string path = Path.GetFullPath($"./Zips/{datapackModel.Id}/{Release.Name}.zip");
                var    dir  = Path.GetDirectoryName(path);
                if (!Directory.Exists(dir))
                {
                    Directory.CreateDirectory(dir);
                }
                using (var stream = new FileStream(path, FileMode.Create))
                {
                    await file.CopyToAsync(stream);
                }
                Release.Path = path;
            }
            else
            {
                return(RedirectToAction("AddRelease/" + id));
            }

            Release.ReleaseDate = DateTime.UtcNow;
            Release.Datapack    = datapackModel;

            _context.Add(Release);
            await _context.SaveChangesAsync();

            return(RedirectToAction("Details", new { id = id }));
        }
Esempio n. 2
0
        public async Task <IActionResult> Download(int?id, string Version)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var datapackModel = await _context.Datapacks.Where(m => m.Id == id).Include(x => x.Versions).SingleAsync();

            if (datapackModel == null)
            {
                return(NotFound());
            }

            DatapackVersionModel version = null;

            if (!string.IsNullOrEmpty(Version))
            {
                version = datapackModel.Versions.First(x => x.Name == Version);
            }

            if (version == null)
            {
                version = datapackModel.Versions.OrderBy(x => x.ReleaseDate).ToList()[0];
            }

            var content  = new FileStream(version.Path, FileMode.Open, FileAccess.Read, FileShare.Read);
            var response = File(content, "application/octet-stream", $"{datapackModel.Name}-{version.Name}.zip");//FileStreamResult

            datapackModel.Downloads++;
            _context.Update(datapackModel);
            await _context.SaveChangesAsync();

            return(response);
            //return RedirectToAction("Details", new { id = id});
        }