public HttpResponseMessage SaveLogHQ() { try { HttpMultipartParser.MultipartFormDataParser parser = new HttpMultipartParser.MultipartFormDataParser(HttpContext.Current.Request.InputStream); var Files = parser.Files; var user = ((PtcIdentity)this.User.Identity).currentUser; string url = ServerProfile.GetInstance().LOG_PATH; if (Files == null || Files.Count() == 0) { throw new ArgumentNullException($"[ERROR]=>上傳LOG FILE時,並未給入檔案"); } foreach (var file in Files) { string fullPath = $"{url}/{user.CompCd}/{user.RoleId}/{user.UserId}/"; FileUtil.Save(fullPath, file.Name, file.Data); } } catch (Exception ex) { _logger.Error(ex.Message); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $"{ ex.GetType().Name}:message:{ex.Message}")); } return(Request.CreateResponse( HttpStatusCode.OK, new JsonResult <Boolean>(true, "上傳LOG FILE成功", 1, true))); }
public HttpResponseMessage Test() { try { HttpMultipartParser.MultipartFormDataParser parser = new HttpMultipartParser.MultipartFormDataParser(HttpContext.Current.Request.InputStream); } catch (Exception ex) { _logger.Error(ex.Message); return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, $"{ ex.GetType().Name}:message:{ex.Message}")); } return(null); }
/// <summary> /// IHttpRequestHandler.OnRequest internal handler /// </summary> internal void onRequest(HttpRequestHead head, IDataProducer body, IHttpResponseDelegate response) { RESTMethod method; if (Enum.TryParse<RESTMethod>(head.Method, out method)) { Pair<ResourceInstance, object[]> resourceParameterPair = retrieveResource(head.Path, method); ResourceInstance resource = resourceParameterPair.V1; object[] resourceParameters = resourceParameterPair.V2; if (resource != null) { ResourceMethod resourceMethod = resource.GetResourceMethod(method); if (resourceMethod != null) { if (resourceMethod.Parameters.Length == resourceParameters.Length + 1) { NameValueCollection getQuery = HttpUtility.ParseQueryString(head.QueryString ?? ""); // now, if it's a POST, read POST data then if (method == RESTMethod.POST) { var consumer = new BufferedConsumer(bufferedBody => { HttpMultipartParser.MultipartFormDataParser parser = new HttpMultipartParser.MultipartFormDataParser(new MemoryStream(Encoding.Default.GetBytes(bufferedBody))); NameValueCollection postQuery = new NameValueCollection(); foreach (var param in parser.Parameters) postQuery.Add(param.Key, param.Value.Data); Context invocationContext = new Context(new Request(head, postQuery, getQuery)); giveResponse(resourceMethod, invocationContext, response, resourceParameters); }, error => { _logger.Error("IDataProducer.Connect failed", error); }); body.Connect(consumer); } else { Context invocationContext = new Context(new Request(head, getParameters: getQuery)); giveResponse(resourceMethod, invocationContext, response, resourceParameters); } } else { Response notFoundResponse = Response.Error(HttpStatusCode.NotFound); response.OnResponse(notFoundResponse.Head, notFoundResponse.Body); } } else { Response notImplementedResponse = Response.Error(HttpStatusCode.NotImplemented); response.OnResponse(notImplementedResponse.Head, notImplementedResponse.Body); } } else { Response notFoundResponse = Response.Error(HttpStatusCode.NotFound); response.OnResponse(notFoundResponse.Head, notFoundResponse.Body); } } else { Response methodNotAllowedResponse = Response.Error(HttpStatusCode.MethodNotAllowed); response.OnResponse(methodNotAllowedResponse.Head, methodNotAllowedResponse.Body); } }
// POST MachineImageMessageApi public string Post() { var stream = new MemoryStream(); ControllerContext.Request.Content.CopyToAsync(stream).Wait(); stream.Seek(0, SeekOrigin.Begin); HttpMultipartParser.MultipartFormDataParser parser = new HttpMultipartParser.MultipartFormDataParser(stream); var filesList = parser.Files; if (filesList.Count > 0) { string uploadsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, uploadRelativeDirectory); if (!Directory.Exists(uploadsDirectory)) { Directory.CreateDirectory(uploadsDirectory); } Guid guid = Guid.NewGuid(); string resourceIdForImage = filesList.First().FileName; resourceIdForImage = Path.GetFileNameWithoutExtension(resourceIdForImage) + "_" + guid.ToString() + Path.GetExtension(resourceIdForImage); Stream data = filesList.First().Data; bool ImageParsedSuccessfully = false; try { data.Seek(0, SeekOrigin.Begin); Image image = Image.FromStream(data); image.Save(Path.Combine(uploadsDirectory, resourceIdForImage)); ImageParsedSuccessfully = true; // Publish IMachineImageMessage here only string host = System.Configuration.ConfigurationSettings.AppSettings["ChatInterfaceHost"]; string port = System.Configuration.ConfigurationSettings.AppSettings["ChatInterfacePort"]; string networkLocalHttpUri = "http://" + host + ":" + port + "/MachineImageMessageApi/" + resourceIdForImage; string deviceLocalFilePath = Path.Combine(uploadsDirectory, resourceIdForImage); MachineImageMessage imageMessage = new MachineImageMessage(resourceIdForImage, image, networkLocalHttpUri, deviceLocalFilePath); hub?.Publish <IMachineImageMessage>(imageMessage); // Posting the information as IMachineMessage IMachineMessage message = new MachineMessage(string.Format("MachineImageMessage published: {0}, Image parsing done: {1}, PossibleAccessLink: {2}", resourceIdForImage, ImageParsedSuccessfully, networkLocalHttpUri)); hub?.Publish <IMachineMessage>(message); Console.WriteLine("[INFO] /MachineImageMessageApi: MachineImageMessage published: {0}, Image parsing done: {1}, PossibleAccessLink: {2}", resourceIdForImage, ImageParsedSuccessfully, networkLocalHttpUri); } catch { data.Seek(0, SeekOrigin.Begin); FileStream fileStream = new FileStream(Path.Combine(uploadsDirectory, resourceIdForImage), FileMode.Create); data.CopyTo(fileStream); fileStream.Close(); } if (hub == null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("MachineImageMessageApiController error, hub is not available. IMachineMessage not pushed with message"); Console.ResetColor(); return("Server Api Error"); } return(resourceIdForImage); } return("Acknowledged"); }