public Stream GetStreamAsync( MediaBlobData request) { var filename = GetFilename(request); return(new FileStream(filename, FileMode.Open)); }
public Task MoveAsync( MediaBlobData request, string newLocation, CancellationToken cancellationToken) { var filename = GetFilename(request); var newPathFragments = new List <string> { _options.RootDirectory }; newPathFragments.AddRange(newLocation.Split('/')); var newDir = Path.Combine(newPathFragments.ToArray()); if (!Directory.Exists(newDir)) { Directory.CreateDirectory(newDir); } var newFilename = Path.Combine(newDir, Path.GetFileName(filename)); File.Move(filename, newFilename, true); return(Task.CompletedTask); }
public async Task <IActionResult> GetImageAsync(Guid id, CancellationToken cancellationToken) { Media media = await _mediaService.GetByIdAsync(id, cancellationToken); MediaBlobData data = await _mediaService.GetMediaData(media, cancellationToken); return(new FileContentResult(data.Data, "image/jpg")); }
public async Task <MediaBlobData> GetMediaData(Media media, CancellationToken cancellationToken) { MediaBlobData blob = await _mediaBlobStore.GetAsync( media.ToBlobDataRequest(), cancellationToken); return(blob); }
public async Task <MediaStream> GetVideoAsync(Guid id, CancellationToken cancellationToken) { Media?video = await _mediaStore.GetByIdAsync(id, cancellationToken); MediaBlobData request = _mediaService.GetBlobRequest( video, MediaFileType.Video720); Stream stream = _mediaStore.Blob.GetStreamAsync(request); return(new MediaStream(stream, video.Filename.Split('.').Last())); }
public MediaStream GetVideoPreview(Guid id, CancellationToken cancellationToken) { MediaBlobData request = _mediaService.GetBlobRequest( new Media { Id = id }, MediaFileType.VideoGif); Stream stream = _mediaStore.Blob.GetStreamAsync(request); return(new MediaStream(stream, "image/gif")); }
public async Task StoreAsync(MediaBlobData data, CancellationToken cancellationToken) { var filename = GetFilename(data); var file = new FileInfo(filename); if (!file.Directory !.Exists) { Directory.CreateDirectory(file.Directory.FullName); } await File.WriteAllBytesAsync(filename, data.Data, cancellationToken); }
public async Task <MediaBlobData> GetAsync( MediaBlobData request, CancellationToken cancellationToken) { var filename = GetFilename(request); byte[] data = await File.ReadAllBytesAsync(filename, cancellationToken); return(request with { Data = data }); }
public async Task <IActionResult> WebImageAsync(Guid id, CancellationToken cancellationToken) { MediaBlobData data = await _mediaBlobStore.GetAsync( new MediaBlobData { Type = MediaBlobType.Web, Filename = id.ToString("N") + ".webp" }, cancellationToken); return(new FileContentResult(data.Data, "image/webp") { EnableRangeProcessing = true }); }
public Task <bool> DeleteAsync( MediaBlobData request, CancellationToken cancellationToken) { var filename = GetFilename(request); if (File.Exists(filename)) { File.Delete(filename); Log.Information("Delete {File}", filename); return(Task.FromResult(true)); } return(Task.FromResult(false)); }
private string GetDirectory(MediaBlobData data) { var loc = _options.BlobTypeMap[data.Type]; var paths = new List <string> { _options.RootDirectory }; paths.AddRange(loc.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries)); if (data.Directory != null) { paths.AddRange(data.Directory.Split( new[] { '/' }, StringSplitOptions.RemoveEmptyEntries)); } return(Path.Combine(paths.ToArray())); }
public Task MoveToSpecialFolderAsync( MediaBlobData request, MediaBlobType mediaBlobType, CancellationToken cancellationToken) { var filname = GetFilename(request); var newDir = GetDirectory(new MediaBlobData { Type = mediaBlobType }); if (!Directory.Exists(newDir)) { Directory.CreateDirectory(newDir); } var newFilename = Path.Combine(newDir, Path.GetFileName(filname)); File.Move(filname, newFilename, true); return(Task.CompletedTask); }
public string GetFilename(MediaBlobData data) { string?directory = GetDirectory(data); return(Path.Combine(directory, data.Filename)); }