2

Hello im trying to access an image from a post request with MultipartFormDataStreamProvider. So far it seems successful other than when i try to create a file steam from the local name, the file is then in use. How do i get the current open stream to read the file, or get the old stream to close?

*Note: Please ignore the not so great try catch.

What I have so far:

[ResponseType(typeof(AdminImage))]
        public IHttpActionResult PostAdminImage([FromUri]AdminImage adminImage)
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
            string root = HttpContext.Current.Server.MapPath("~/App_Data");
            var provider = new MultipartFormDataStreamProvider(root);
            try
            {
                Request.Content.ReadAsMultipartAsync(provider);
                foreach (MultipartFileData file in provider.FileData)
                {
                    FileStream fs = new FileStream(file.LocalFileName, FileMode.Open);
                    adminImage.ImageContent = adminImage.ImageToByteArray(Image.FromStream(fs));
                }
                if (!ModelState.IsValid)
                {
                    return BadRequest(ModelState);
                }

                db.AdminImages.Add(adminImage);
                db.SaveChanges();

            }
            catch (Exception ex)
            {
                return InternalServerError();
            }
            return CreatedAtRoute("DefaultApi", new { id = adminImage.Id }, adminImage);
        }
Mr. MonoChrome
  • 1,383
  • 3
  • 17
  • 39

0 Answers0