public HttpResponseMessage UploadFile(bool overWrite) { HttpResponseMessage response = Request.CreateResponse(); List <FileResponseMessage> fileResponseMessages = new List <FileResponseMessage>(); FileResponseMessage fileResponseMessage = new FileResponseMessage { IsExists = false }; try { if (!Request.Content.IsMimeMultipartContent()) { fileResponseMessage.Content = "Upload data request is not valid !"; fileResponseMessages.Add(fileResponseMessage); response = Request.CreateResponse(HttpStatusCode.UnsupportedMediaType, fileResponseMessages, new MediaTypeHeaderValue("text/json")); } else { response = ProcessUploadRequest(overWrite); } } catch (Exception exception) { // Log exception and return gracefully fileResponseMessage = new FileResponseMessage { IsExists = false }; fileResponseMessage.Content = ProcessException(exception); fileResponseMessages.Add(fileResponseMessage); response = Request.CreateResponse(HttpStatusCode.InternalServerError, fileResponseMessages, new MediaTypeHeaderValue("text/json")); } return(response); }
/// <summary> /// Process upload request in the server /// </summary> /// <param name="overWrite">An indicator to overwrite a file if it exist in the server.</param> /// <returns>List of message object</returns> private HttpResponseMessage ProcessUploadRequest(bool overWrite) { List <FileResponseMessage> fileResponseMessages = new List <FileResponseMessage>(); HttpResponseMessage response = null; FileResponseMessage fileResponseMessage = new FileResponseMessage(); if (this.GetRequestContentLength() > WebApiApplication.MaxRequestLength) { int maxSize = Convert.ToInt32(Math.Round(WebApiApplication.MaxRequestLength / 1024.0, 1)); fileResponseMessage.Content = string.Format("Upload data content size is beyond maximum size({0}MB) allowed by the server !", maxSize < 1 ? 1 : maxSize); fileResponseMessages.Add(fileResponseMessage); response = Request.CreateResponse(HttpStatusCode.BadRequest, fileResponseMessages, new MediaTypeHeaderValue("text/json")); } else { try { HttpRequestBase request = this.Request(); string uploadPath = this.GetUploadPath(); HttpFileCollectionBase files = request.Files; foreach (string file in files) { string filePath = Path.Combine(uploadPath, file); fileResponseMessage = new FileResponseMessage(); if (!overWrite && File.Exists(filePath)) { fileResponseMessage.Content = string.Format("{0} file already exist !", file); fileResponseMessage.IsExists = false; } else { if (files[file].WriteStream(filePath)) { fileResponseMessage.Content = string.Format("{0} file uploaded successfully !", file); fileResponseMessage.IsExists = true; } else { fileResponseMessage.Content = string.Format("Can't upload {0} file !", file); fileResponseMessage.IsExists = false; } } fileResponseMessages.Add(fileResponseMessage); } if (fileResponseMessages.Count == 0) { fileResponseMessage = new FileResponseMessage(); fileResponseMessage.Content = "No upload file(s) found !"; fileResponseMessages.Add(fileResponseMessage); response = Request.CreateResponse(HttpStatusCode.BadRequest, fileResponseMessages, new MediaTypeHeaderValue("text/json")); } else { response = Request.CreateResponse(HttpStatusCode.OK, fileResponseMessages, new MediaTypeHeaderValue("text/json")); } } catch (Exception exception) { throw exception; } } return(response); }