コード例 #1
0
        public async Task <HttpResponseMessage> GetAudio(int id)
        {
            var result = new HttpResponseMessage(HttpStatusCode.OK);

            var userId = await userIdFinder.GetUserIdByUserName(User.Identity.Name);

            var song = await service.GetSongAsync(id, userId);

            var fileName = song.AudioPath;
            //var fileName = "cover #0.jpg";

            var path     = HttpContext.Current.Server.MapPath("~/UsersContent/Audio");
            var fullpath = Path.Combine(path, fileName);

            var fileBytes    = File.ReadAllBytes(fullpath);
            var memoryStream = new MemoryStream(fileBytes);

            result.Content = new StreamContent(memoryStream);

            var headers = result.Content.Headers;

            headers.ContentDisposition          = new ContentDispositionHeaderValue("attachment");
            headers.ContentDisposition.FileName = fileName;
            headers.ContentType =
                new MediaTypeHeaderValue("application/" + fileName.Substring(fileName.Length - 3));
            headers.ContentLength = memoryStream.Length;
            return(result);
        }
コード例 #2
0
        public async Task <IHttpActionResult> Get(int id)
        {
            try
            {
                var userId = await userIdFinder.GetUserIdByUserName(User.Identity.Name);

                var container = await service.GetSongsContainerAsync(id, userId);

                return(Ok(container));
            }
            catch (NotFoundException)
            {
                return(NotFound());
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }