public async Task<HttpResponseMessage> UploadFileMultipart() { //StringBuilder lretstring = new StringBuilder(); var response = new Dictionary<string, object>(); UploadJobAttachmentResponse lResponse = new UploadJobAttachmentResponse(); ErrorResponse error = new ErrorResponse(); // Check if the request contains multipart/form-data. if (!Request.Content.IsMimeMultipartContent()) { //lretstring.Append("Not MultipartContent"); error.ErrorCode = HttpStatusCode.UnsupportedMediaType; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); // response.Add("ResultResponse", lretstring.ToString()); return Request.CreateResponse(HttpStatusCode.BadRequest, response); } else if (Request.Headers == null) { // lretstring.Append("Header is null"); error.ErrorCode = HttpStatusCode.BadRequest; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); // response.Add("ResultResponse", lretstring.ToString()); return Request.CreateResponse(HttpStatusCode.BadRequest, response); } string SessionID = string.Empty; string JobGUID = string.Empty; if (HttpContext.Current.Request.Form != null && HttpContext.Current.Request.Form.Count > 0) { // lretstring.Append("Inside Request Form"); SessionID = HttpContext.Current.Request.Form["SessionGUID"]; JobGUID = HttpContext.Current.Request.Form["JobGUID"]; } if (_IJMServer.ValidateUser(SessionID)) { // lretstring.Append("Valid User"); string lFilesRoot = _IJMServer.GetUploadFileAttachmetsPath(JobGUID, SessionID); if (null == lFilesRoot) { // lretstring.Append("Fileroot is null"); error.ErrorCode = HttpStatusCode.InternalServerError; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); // response.Add("ResultResponse", lretstring.ToString()); return Request.CreateResponse(HttpStatusCode.InternalServerError, response); } else { // lretstring.Append("Inside else"); var lProvider = new MultipartFormDataStreamProvider(lFilesRoot); try { // Read the form data. await Request.Content.ReadAsMultipartAsync(lProvider); foreach (MultipartFileData file in lProvider.FileData) { string lDestFilePath = lFilesRoot + "/" + file.Headers.ContentDisposition.FileName; if (File.Exists(lDestFilePath)) { File.Delete(lDestFilePath); } File.Move(file.LocalFileName, lDestFilePath); //This is all files Logger.Debug("Request File Name: " + file.Headers.ContentDisposition.FileName); Logger.Debug("Server file path: " + file.LocalFileName); } response.Add("JobAttachmentUpload", lResponse); // response.Add("ResultResponse", lretstring.ToString()); Logger.Debug("Response: " + new JavaScriptSerializer().Serialize(lResponse)); return Request.CreateResponse(HttpStatusCode.OK, response); } catch (System.Exception ex) { //lretstring.Append("Catch"); Logger.Error(ex.Message); error.ErrorCode = HttpStatusCode.InternalServerError; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); // response.Add("ResultResponse", lretstring.ToString()); return Request.CreateResponse(HttpStatusCode.InternalServerError, response); } } } else { error.ErrorCode = HttpStatusCode.Forbidden; error.ErrorMessage = "Session has expired, please login again"; response.Add("ErrorResponse", error); return Request.CreateResponse(HttpStatusCode.Forbidden, response); } //string root = AppDomain.CurrentDomain.BaseDirectory + "formdata"; //var provider = new MultipartFormDataStreamProvider(root); //try //{ // // Read the form data. // await Request.Content.ReadAsMultipartAsync(provider); // foreach (var key in provider.FormData.AllKeys) // { // //This should be the JSON that contains the details about the file(s) uploaded // var val = provider.FormData.GetValues(key); // Trace.WriteLine(string.Format("{0}: {1}", key, val)); // } // foreach (MultipartFileData file in provider.FileData) // { // //This is all files // Trace.WriteLine(file.Headers.ContentDisposition.FileName); // Trace.WriteLine("Server file path: " + file.LocalFileName); // } // return Request.CreateResponse(HttpStatusCode.OK); //} //catch (System.Exception e) //{ // return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e); //} }
public HttpResponseMessage UploadJobAttachment([FromBody]UploadJobAttachmentRequest jobAttachmentRequest) { Logger.Debug("Inside JM Controller- UploadJobAttachment"); Logger.Debug("Request: " + new JavaScriptSerializer().Serialize(jobAttachmentRequest)); UploadJobAttachmentResponse lResponse = new UploadJobAttachmentResponse(); ErrorResponse error = new ErrorResponse(); var response = new Dictionary<string, object>(); try { string SessionID = Guid.Empty.ToString(); if (Request.Headers != null) { SessionID = Request.Headers.LastOrDefault().Value.First(); Logger.Debug("SessionID: " + SessionID.ToString()); if (_IJMServer.ValidateUser(SessionID)) { Guid UserGUID = _IJMServer.GetUserGUID(SessionID); lResponse = _IJMServer.UploadJobAttachment(jobAttachmentRequest, UserGUID); if (lResponse != null) { response.Add("JobAttachmentUpload", lResponse); Logger.Debug("Response: " + new JavaScriptSerializer().Serialize(lResponse)); return Request.CreateResponse(HttpStatusCode.OK, response); } else { error.ErrorCode = HttpStatusCode.BadRequest; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); return Request.CreateResponse(HttpStatusCode.BadRequest, response); } } else { error.ErrorCode = HttpStatusCode.Forbidden; error.ErrorMessage = "Session has expired, please login again"; response.Add("ErrorResponse", error); return Request.CreateResponse(HttpStatusCode.Forbidden, response); } } else { error.ErrorCode = HttpStatusCode.BadRequest; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); return Request.CreateResponse(HttpStatusCode.BadRequest, response); } } catch (Exception ex) { Logger.Error(ex.Message); error.ErrorCode = HttpStatusCode.InternalServerError; error.ErrorMessage = "Failure"; response.Add("ErrorResponse", error); return Request.CreateResponse(HttpStatusCode.InternalServerError, response); } }