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"); }
public Playlist Get(int id) { return(_multiSourcePlaylistRepository.GetPlaylist(id)); }