コード例 #1
0
        public IActionResult Index()
        {
            MusicFileCreateViewModel musicFileCreateViewModel = new MusicFileCreateViewModel
            {
                Genres     = EnumHelper <Genre> .GetDisplayValues(Genre.NONE),
                MusicFiles = _musicFileRepository.GetAllMusicFiles()
            };

            return(View(musicFileCreateViewModel));
        }
コード例 #2
0
        public IActionResult Index(MusicFileCreateViewModel model)
        {
            if (ModelState.IsValid && model.Files != null)
            {
                foreach (var file in model.Files)
                {
                    // The files must be uploaded to their respective folder in wwwroot
                    string songsFolder    = Path.Combine(_webHostEnvironment.WebRootPath, "songs");
                    string albumArtFolder = Path.Combine(_webHostEnvironment.WebRootPath, "images");

                    // A new GUID value ensures a unique file name
                    string songFileName = Guid.NewGuid().ToString() + ".mp3";
                    string songFilePath = Path.Combine(songsFolder, songFileName);

                    // Copy the file to the wwwroot/songs folder
                    // Using block automatically disposes the file stream at the end
                    using (FileStream fileStream = new FileStream(songFilePath, FileMode.Create))
                    {
                        file.CopyTo(fileStream);
                    }

                    // Open the file using TagLib-Sharp
                    var tagLibFile = TagLib.File.Create(songFilePath);

                    string albumArtFileName = null;

                    if (tagLibFile.Tag.Pictures.Length >= 1)
                    {
                        string imageType = tagLibFile.Tag.Pictures[0].MimeType.Split("/").Last();

                        // A new GUID value ensures a unique file name
                        albumArtFileName = Guid.NewGuid().ToString() + "." + imageType;
                        string albumArtFilePath = Path.Combine(albumArtFolder, albumArtFileName);

                        // Copy the album art to the wwwroot/images folder
                        using (FileStream fileStream = new FileStream(albumArtFilePath, FileMode.Create))
                        {
                            fileStream.Write(tagLibFile.Tag.Pictures[0].Data.Data);
                        }
                    }

                    Genre genre = Genre.NONE;

                    try
                    {
                        genre = (Genre)Enum.Parse(typeof(Genre), tagLibFile.Tag.FirstGenre, true);
                    }
                    catch (Exception)
                    {
                        // Genre will default to NONE if no match is found
                    }

                    MusicFile musicFile = new MusicFile
                    {
                        FilePath     = songFileName,
                        IsChecked    = false,
                        AlbumArtPath = albumArtFileName,
                        FileName     = file.FileName,
                        Title        = tagLibFile.Tag.Title,
                        Artist       = tagLibFile.Tag.FirstPerformer,
                        Genre        = genre
                    };

                    _musicFileRepository.Add(musicFile);
                }
            }

            MusicFileCreateViewModel musicFileCreateViewModel = new MusicFileCreateViewModel
            {
                Genres     = EnumHelper <Genre> .GetDisplayValues(Genre.NONE),
                MusicFiles = _musicFileRepository.GetAllMusicFiles()
            };

            return(View(musicFileCreateViewModel));
        }