public async Task <ActionResult> Download(string accountName, string containerName, string id) { var account = await _accountDbCommand.FindByNameAsync(accountName); if (account == null) { return(HttpNotFound()); } if (account.Owner != User.Identity.Name) { return(new HttpUnauthorizedResult()); } var container = await _containerDbCommand.FindAsync(account, containerName); if (container == null) { return(HttpNotFound()); } var target = await _blobDbCommand.FindAsync(id); if (target == null) { return(HttpNotFound()); } var contentType = target.Properties.ContentType ?? "application/octet-stream"; return(File(target.Image, contentType, target.Name)); }
public async Task <HttpResponseMessage> GetImageAsync([FromUri] string accountName, [FromUri] string containerName, [FromUri] string name) { var container = await CheckAccessKey(accountName, containerName, true); var blob = await _blobDbCommand.FindAsync(container, name); if (blob == null) { throw new HttpResponseException(HttpStatusCode.NoContent); } var res = Request.CreateResponse(HttpStatusCode.OK); var content = new ByteArrayContent(blob.Image); content.Headers.ContentType = new MediaTypeHeaderValue(blob.Properties.ContentType ?? "application/octet-stream"); content.Headers.ContentDisposition = new ContentDispositionHeaderValue(blob.Properties.ContentDisposition ?? "attachment") { ModificationDate = blob.Properties.LastModifiedUtcDateTime, FileName = HttpUtility.UrlEncode(blob.Name), Size = blob.Properties.Length, }; res.Content = content; return(res); }