import win.ui; /*DSG{{*/ var winform = win.form(text="WebView2 传输二进制字节串";right=757;bottom=467) winform.add() /*}}*/ import web.view; var wb = web.view(winform); var imageBuffer = string.loadBuffer("~\example\Graphics\.gdip.jpg"); import wsock.tcp.asynHttpServer; //如果建立 aardio 工程下面这句可以省略 wb.asynHttpServer = wsock.tcp.asynHttpServer(); //下面模拟 aardio 工程文件结构,如果建立了工程下面的代码都可以省略。 wb.asynHttpServer.run({ //处理 HTTP 请求 ["/res/image.aardio"] = function(){ response.contentType = "image/jpeg"; response.writeBuffer(imageBuffer);//输出图像数据 }; //响应 HTTP 请求,直接回复 HTML 代码 ["/index.html"] = /*** 网页里写相对路径就可以 ***/ } ); wb.external = { getNativeBuffer = function(){ return imageBuffer; }; setJsTypedArrayByRef = function(jsUint8Array){ //print("数组长度",jsUint8Array.size); //print("数组元素",jsUint8Array[0]);// JS 数组起始索引为 0 }; setJsByteArray = function(byteArray){ //JS 数组转换为 buffer var buf = raw.buffer({BYTE data[]=byteArray}) //写入 buffer 到文件 //io.file.write("/test.jpg",buf); }; } //打开网页,自动识别并支持 wsock.tcp.asynHttpServer 或 wsock.tcp.simpleHttpServer 服务端 wb.go("/index.html"); //传 buffer 给 JS 函数 wb.xcall("setNativeBuffer",imageBuffer); winform.show(); win.loopMessage();