public Task <IEnumerable <string> > Post([FromUri] CoursePictureQuery query) { if (!Request.Content.IsMimeMultipartContent()) { throw new HttpResponseException(Request.CreateResponse( HttpStatusCode.NotAcceptable, "This request is not properly formatted")); } try { var streamProvider = new MultipartMemoryStreamProvider(); var task = Request.Content.ReadAsMultipartAsync(streamProvider) .ContinueWith <IEnumerable <string> >(t => { if (t.IsFaulted || t.IsCanceled) { throw new HttpResponseException(HttpStatusCode.InternalServerError); } var addedId = streamProvider.Contents .Where(i => (i.Headers.ContentType != null && !string.IsNullOrEmpty(i.Headers.ContentType.MediaType))) .Select(i => { Stream stream = i.ReadAsStreamAsync().Result; string pictureName = imageService.SavePictureToTemp(query.CompanyID, query.CourseID, stream); return(pictureName); }); return(addedId); }); return(task); } catch (Exception ex) { throw new HttpResponseException(Request.CreateResponse( HttpStatusCode.NotAcceptable, "Error: " + ex.Message)); } }
public HttpResponseMessage GetImage([FromUri] CoursePictureQuery query) { CoursePictureModel pictureModel = null; var response = new HttpResponseMessage(); try { if (!string.IsNullOrEmpty(query.TempName)) { pictureModel = imageService.GetTempPicture(query.TempName); } else if (query.CompanyID > 0 && query.CourseID > 0) { pictureModel = imageService.GetPicture(query.CompanyID, query.CourseID); } } catch (CourseNotFoundException ex) { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.NotFound)); } Stream outputStream = null; if (pictureModel != null && pictureModel.Picture != null && pictureModel.Picture.Length > 0) { outputStream = pictureModel.Picture; } else { string path = System.Web.HttpContext.Current.Server.MapPath(@"~/images/empty-course.png"); outputStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } outputStream.Position = 0; response.Content = new StreamContent(outputStream); response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png"); return(response); }