示例#1
0
        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));
        }
示例#2
0
        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);
        }