public async Task <HttpResponseMessage> UploadImage(HttpRequestMessage request, int userId) { var user = _membershipApi.GetUserById(userId); if (user == null) { return(null); } var imagePath = HttpContext.Current.Server.MapPath("~/Content/BursifyUploads/" + userId + "/images"); var directory = new DirectoryInfo(imagePath); if (!directory.Exists) { directory.Create(); } var multipartFormDataStreamProvider = new UploadMultipartFormProvider(directory.FullName); // Read the MIME multipart asynchronously await Request.Content.ReadAsMultipartAsync(multipartFormDataStreamProvider); var localFileName = multipartFormDataStreamProvider .FileData.Select(multiPartData => multiPartData.LocalFileName).ToList(); var nameOfFile = localFileName[0]; // Create response if (nameOfFile == null) { return(null); } var fileUploadResult = new FileUploadResult { LocalFilePath = nameOfFile, FileName = Path.GetFileName(nameOfFile), FileLength = new FileInfo(nameOfFile).Length }; // update profile picture path of the user user.ProfilePicturePath = fileUploadResult.FileName; //update the user in the database _membershipApi.UpdateUser(user); var response = request.CreateResponse(HttpStatusCode.OK, fileUploadResult); return(response); }