public async Task <string> FileUpload(long id, IFormFile[] files)
        {
            var claimsIdentity = User.Identity as ClaimsIdentity;
            var userId         = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value);
            var user           = _multiSourcePlaylistRepository.GetUser(userId);
            var filePath       = Path.Combine(
                "uploads",
                user.FileFolder);
            var uploads = Path.Combine(
                _environment.ContentRootPath,
                filePath);

            //string url = UriHelper.GetDisplayUrl(Request);//http://localhost:8080/api/fileupload/1
            //var urlParts = url.Split(new[] { "api/fileupload" }, StringSplitOptions.None);
            //var baseUrl = urlParts[0];
            var playlist = _multiSourcePlaylistRepository.GetPlaylist(id);

            var          allTracks = _multiSourcePlaylistRepository.GetAllTracks();
            int          lastOrder = 0;
            List <Track> temp      = new List <Track>();

            if (allTracks != null)
            {
                temp = allTracks.Where(y => y.Playlist.Id == id).ToList();
            }
            if (temp != null && temp.Any())
            {
                lastOrder = temp.OrderByDescending(x => x.Order).FirstOrDefault().Order + 1;
            }
            //@string.Format("{0}://{1}{2}{3}", Context.Request.Scheme, Context.Request.Host, Context.Request.Path, Context.Request.QueryString)
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                _configuration["Production:StorageConnectionString"]);
            CloudBlobClient    blobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container  = blobClient.GetContainerReference(user.FileFolder);

            // Ensure that the share exists.
            if (await container.ExistsAsync())
            {
                int bytesToMegaBytes = 1048576;
                var totalSize        = await isThereDiscSpaceInAzure(container);

                if ((totalSize) / bytesToMegaBytes > 10000)
                {
                    return("NO_DISC_SPACE");
                }
            }
            else
            {
                return("User container doesn't exists.");
            }
            foreach (var file in files)
            {
                try {
                    var            filename = file.FileName;
                    var            fullpath = Path.Combine(uploads, filename);
                    CloudBlockBlob blob     = container.GetBlockBlobReference(filename);
                    if (!await blob.ExistsAsync())
                    {
                        if (file.Length > 0)
                        {
                            using (var fileStream = file.OpenReadStream())
                            {
                                await blob.UploadFromStreamAsync(fileStream);
                            }
                        }
                    }
                    using (var fileStream = new FileStream(fullpath, FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream);

                        fileStream.Flush();
                        fileStream.Dispose();
                    }

                    Track fileTrack = new Track();
                    fileTrack.Address  = file.FileName;
                    fileTrack.Playlist = playlist;
                    fileTrack.Type     = 5;
                    fileTrack.Order    = lastOrder;
                    fileTrack.Name     = getTrackName(fullpath);//hanki bändi ja kappale mp3 tiedoston metasta
                    _multiSourcePlaylistRepository.PostTrack(fileTrack);
                    ++lastOrder;
                    System.IO.File.Delete(fullpath);
                } catch (Exception ex) {
                    return(ex.Message);
                }
            }
            return("File was Uploaded");
        }
Пример #2
0
 public List <Track> Get()
 {
     return(_multiSourcePlaylistRepository.GetAllTracks());
 }