diff --git a/Client.Utils/Constants.cs b/Client.Utils/Constants.cs index 3d266e0c..21cd2b19 100644 --- a/Client.Utils/Constants.cs +++ b/Client.Utils/Constants.cs @@ -70,7 +70,8 @@ namespace Client.Utils public const string KEYB_EXE_NAME = "OSK.EXE"; public const string KEYB_PROC_NAME = "OSK"; - public const string StartingPage = "index.html"; + public const string StartingPage = "index.html"; + public const string Uploadpage = "/api/file_manager/upload"; public const string ConfigPage = "api/configuration/client"; public const string errorPageUrl = @"error://error/"; diff --git a/Client/Browser_Tools/BrowserJSObject.cs b/Client/Browser_Tools/BrowserJSObject.cs index 25e33ed4..706305b2 100644 --- a/Client/Browser_Tools/BrowserJSObject.cs +++ b/Client/Browser_Tools/BrowserJSObject.cs @@ -4,6 +4,7 @@ using Chromium.Remote.Event; using Chromium.WebBrowser; using Client.Config; using Client.Config.SubModels; +using Client.Utils; using CMS_Client.Browser_Tools.Models; using CMS_Client.View; using Newtonsoft.Json; @@ -14,6 +15,7 @@ using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; +using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; @@ -359,10 +361,55 @@ namespace CMS_Client.Browser_Tools e.SetReturnValue(JsonConvert.SerializeObject(filelist)); } - public void uploadProgram(object sender, CfrV8HandlerExecuteEventArgs e) + + + public async void uploadProgram(object sender, CfrV8HandlerExecuteEventArgs e) { - var fileToUpload = JsonConvert.DeserializeObject(e.Arguments[0].StringValue); + if (e.Arguments.Length < 2 || e.Arguments[0] == null) + return; + + + CfrV8Value successCallback = e.Arguments[1]; + Console.WriteLine(e.Arguments[1].FunctionName); + + + var fileToUpload = e.Arguments[0].StringValue; + var filecontent = System.IO.File.ReadAllBytes(fileToUpload); + var ctx = CfrV8Context.GetCurrentContext(); + + using (HttpClient httpClient = new HttpClient()) + { + MultipartFormDataContent form = new MultipartFormDataContent(); + + form.Add(new ByteArrayContent(filecontent), "file", fileToUpload); + HttpResponseMessage response = await httpClient.PostAsync( + "http://" + Config.ConnectionConfig.ServerUrl + ":" + Config.ConnectionConfig.ServerPort + "/" + Constants.Uploadpage, + form); + + response.EnsureSuccessStatusCode(); + Client_DownloadDataCompleted(successCallback, ctx); + } + } + + + private void Client_DownloadDataCompleted(CfrV8Value successCallback, CfrV8Context v8Context) + { + + var rpcContext = successCallback.CreateRemoteCallContext(); + rpcContext.Enter(); + + v8Context.Enter(); + Console.WriteLine(successCallback.FunctionName); + var args = new CfrV8Value[] { }; + successCallback.ExecuteFunction(null, args); + v8Context.Exit(); + rpcContext.Exit(); + } + + + + public void activateProgram(object sender, CfrV8HandlerExecuteEventArgs e) { @@ -393,6 +440,7 @@ namespace CMS_Client.Browser_Tools file.Name = f.Name; file.CreationDate = f.CreationTime; file.LastModDate = f.LastAccessTime; + file.AbsolutePath = p; imagePath = Path.GetFileNameWithoutExtension(p); imageDirectory = Path.GetDirectoryName(p); diff --git a/Client/Browser_Tools/Models/InfoFile.cs b/Client/Browser_Tools/Models/InfoFile.cs index ea8cfe9e..3727af83 100644 --- a/Client/Browser_Tools/Models/InfoFile.cs +++ b/Client/Browser_Tools/Models/InfoFile.cs @@ -9,6 +9,7 @@ namespace CMS_Client.Browser_Tools.Models public class InfoFile { public String Name; + public String AbsolutePath; public DateTime CreationDate; public DateTime LastModDate; public List Content; diff --git a/Step/Controllers/WebApi/NcFileController.cs b/Step/Controllers/WebApi/NcFileController.cs index 601ee684..227507a0 100644 --- a/Step/Controllers/WebApi/NcFileController.cs +++ b/Step/Controllers/WebApi/NcFileController.cs @@ -8,6 +8,7 @@ using System.Net; using System.Net.Http; using System.Net.Http.Headers; using System.Text; +using System.Threading; using System.Threading.Tasks; using System.Web.Http; using static CMS_CORE_Library.DataStructures; @@ -79,8 +80,9 @@ namespace Step.Controllers.WebApi List files = new List(); // Read all contents of multipart message into CustomMultipartFormDataStreamProvider. - var result = await Request.Content.ReadAsMultipartAsync(provider); - + var result = await Request.Content.ReadAsMultipartAsync(provider); + + Thread.Sleep(5000); // Send OK Response along with saved file names to the client. return Ok(); } diff --git a/Step/wwwroot/src/modules/base-components/modal-load-program.ts b/Step/wwwroot/src/modules/base-components/modal-load-program.ts index 9b3479c7..3d9ec6a9 100644 --- a/Step/wwwroot/src/modules/base-components/modal-load-program.ts +++ b/Step/wwwroot/src/modules/base-components/modal-load-program.ts @@ -21,6 +21,7 @@ interface PathInfo { interface FileInfo { Name: string; + AbsolutePath: string; CreationDate: string; LastModDate: string; Content: Array; @@ -187,12 +188,16 @@ export default class ModalLoadProgram extends Vue { return moment(date).format("L"); } + callbacktest() { + alert("endtrandfer"); + } + async loadProgram(path: string) { debugger if (this.isLocalNavigation && typeof cmsClient != "undefined") { - await cmsClient.uploadProgram(path); - await cmsClient.activateProgram(path); + await cmsClient.uploadProgram(path,this.callbacktest); + //await cmsClient.activateProgram(path); this.close(); }