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); }
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)); } }