public async Task <byte[]> GetAssetAsync(AssetDownloadRequest asset) { if (!File.Exists(asset.FilePath)) { return(null); } using (var stream = new FileStream(asset.FilePath, FileMode.Open, FileAccess.Read)) { stream.Seek(0, SeekOrigin.Begin); byte[] output = new byte[stream.Length]; await stream.ReadAsync(output, 0, output.Length); return(output); } }
public async Task <byte[]> GetAssetAsync(AssetDownloadRequest asset) { var container = await GetContainerAsync(asset.ContainerName); var blockBlob = container.GetBlockBlobReference(asset.FileName); if (!await blockBlob.ExistsAsync()) { return(null); } using (var blobStream = blockBlob.OpenRead()) { blobStream.Seek(0, SeekOrigin.Begin); byte[] output = new byte[blobStream.Length]; await blobStream.ReadAsync(output, 0, output.Length); return(output); } }
public async Task <IActionResult> DownloadAsync(string fileName, string container = "", string attachment = "") { FilePath = Path.Combine(_settings.CurrentValue.AssetDirectory, fileName); if (container.HasValue()) { CloudContainerName = container; } var provider = new FileExtensionContentTypeProvider(); if (!provider.TryGetContentType(fileName, out string contentType)) { contentType = "application/octet-stream"; } var downloadRequest = new AssetDownloadRequest() { ContainerName = CloudContainerName, FileName = fileName, FilePath = this.FilePath, }; var stream = await _assetStorageService.GetAssetAsync(downloadRequest); if (stream is null) { return(NotFound()); } if (attachment.HasValue() && attachment == "true") { var fileNameEncoded = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8); Response.Headers["Content-Disposition"] = "attachment; filename=\"" + fileNameEncoded + "\""; } return(File(stream, contentType)); }