文件操作浏览器小程序,基于跨浏览器的原生小程序系统-PluginOK中间件(https://github.com/wangzuohuai/WebRunLocal)网络标准版开发,提供本地文件HTTP协议上传与下载、本地图像文件旋转与缩放、本地文件访问、本地程序运行等服务。可用在所有支持WebSocket连接的浏览器中,包括IE8及以上版本。 1、PluginOK中间件的安装: 1)、如果是exe的安装程序,请直接运行安装; 2)、如果是绿色版的程序包,请解压到磁盘某个目录后,双击“InstallWrl.bat”进行安装; 3)、安装完成时会启动PluginOK中间件服务,在安装目录下的Data子目录有ZbaService.txt日志文件输出运行情况。 2、请求安装文件操作小程序,在测试页面上输入 ws://localhost:83?sid=123&flag=1 先连接上中间件服务,然后输入以下内容点击发送: {"req":"Plugin_Install","rid":1,"para":{"Name":"文件操作小程序","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2025-05-30","Desc":"PluginOK中间件之上跨浏览器的文件操作小程序,提供文件HTTP协议上传与下载、本地图像文件缩放与旋转、本地文件访问、本地程序运行等服务,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","DownAddr":"http://local.zorrosoft.com/Files/Net/WrlFileApplet.pid","MD5":"E1DFD1DA28559C41150E2E0B80D6D75E","Version":"2.2.17.6","Size":524288,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"6B18B6F02EB7EB8033B2566D4FBBAF7A294E270F41D2A6A18FE17ED89545749115E1A9AA1E174698C34521D09FE9578DC134315F8C2C04F4AAADFEAF1DC9DE29D4B2D99D62D302868D863CB96B3977415C715B5557E6D16592B8024488C9BF5E8ED42F096224C31E325FD3D90AADEDC2D4F976EA68D3842724D0D25D131C9F725602E136F8828D36385F1BAC85365BAD6473F22089283E9690E764278849F6372A0DBD361CC255ECD9A1419E13D8624045E6CBC0158DC8779B8B8EC81012B63993F8F745A2CB88F9A587CB0795B5B14CB5B9E93469439BAD746D674CB76A2EA19EFAF9E2CA3F90646924486CDBB64663B2F7D9540A902378E88DE76624AAC36D"}} 3、请求更新文件操作小程序: {"req":"Plugin_Update","rid":1,"para":{"Name":"文件操作小程序","PID":"199BB8A7-9DD5-41F5-AE9D-2AA94300B0B3","Date":"2025-05-30","Desc":"PluginOK中间件之上跨浏览器的文件操作小程序,提供文件HTTP协议上传与下载、本地图像文件缩放与旋转、本地文件访问、本地程序运行等服务,可在Chrome、Edge、Firefox、IE、Opera、360、QQ等的浏览器最新版中调用","DownAddr":"http://local.zorrosoft.com/Files/Net/WrlFileApplet_Update.pid","MD5":"43CEB9EB45AEA78EDD080EEDEEC35461","Version":"2.2.17.6","Size":524288,"HideIns":0,"Type":1,"Cookie":"","Auth":"","TK":"AA48993FEFD34A425316CE87ECC3BD44FAF4CB88D952C731E2CB633126D3C42B0D3FF4A314C1E90E6943B8630B3EB7B7EC3254C7395AB8D393C3D035D33951A8C281AEFBF26C47F4F132D029FEC50899EB07AA9EF9D1DD634501E4D949F9243E0142311C22B16F77A69E9250F8CDBEBFC90BE81BFC0E0A7D73B77507F7AFF9D5DCC6DD2ECBE1EC06F53F1CB82973DC113ED94E6954ECADF836FC89C6D1D6A893C214F6DFC6DDC00D803FCED8ADE60A872649BCD10F2F59EDD61BF830496883E22379D305C759E849D0C239840D6FE3C22430C9C9B617CEB64E0CC7842246E7A2AFD280195E26C7EFEF6B3BFB04686DC0F59449745713D708B3C9123D5AA5B54D"}} 以上安装和升级的JSON请求包,可能因版本升级导致内容不同,如遇安装或升级时报错,请联系客服获取最新的请求包。 4、连接请求文件操作小程序服务: 1)、图像文件处理及本地文件操作服务 说明:以下功能请通过Web Socket连接后可执行,如默认侦听端口不是80(关于如何配置侦听端口,请参考SDK包中的文档“PluginOK开发者手册.pdf”),请在连接地址中指定端口号进行连接。 打开测试网页,输入地址:ws://localhost:83?sid=667&pid=D325C871-AB46-479B-B20E-1D861D26CA89&flag=1 点击连接; 支持的协议功能如下: A、批量旋转图像文件 SrcFile、DestFile传入前需进行UrlEncode编码 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_RotateImg","rid":1,"para":{"Angle":90,"Items":[{"ID":"11","SrcFile":"C:/Users/trade/Pictures/test/test.png","DestFile":"C:/Users/trade/Pictures/test/testnew.png"}]}} 旋转指定文件SrcFile指定角度Angle,DestFile为指定时代表生成新图像文件,不指定时直接覆盖到原图 返回内容 {"ret":0,"rid":1,"data":{"Ret":[{"ID":"","Ret":1},{"ID":"","Ret":1}]}} Ret代表是否成功 B、请求指定图像文件的BASE64编码数据 File传入前需进行UrlEncode编码 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_GetImg","rid":2,"para":{"File":"C:/test.jpg","Original":1,"Thumb":{"Width":200,"Height":300,"File":"C:/Newtest.jpg"}}} 指定Original为1时代表同时取原图,有Thumb节点时取指定大小的缩略图,Thumb节点中指定File文件名代表保存到本地,不指定时取原图数据 {"ret":0,"rid":2,"data":{"Thumb":"","Original":"","ThumbFile":"","Ret":1}} C、关联打开指定文件或指定执行程序打开 File传入前需进行UrlEncode编码 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_Open","rid":3,"para":{"File":"D:/Zorro/WRL/Data/WrlService.txt"}} File为本地路径 指定执行程序打开指定文件 {"req":"File_Open","rid":4,"para":{"File":"C:/Windows/System32/notepad.exe D:/Zorro/WRL/Data/WrlService.txt"}} D、删除本地文件 Items子项目传入前需进行UrlEncode编码 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_Delete","rid":5,"para":{"Day":7,"Items":["c:/Newtest.jpg","c:/test.jpg"]}} 删除Items指定的本地文件,可支持多个 E、创建指定目录 Dir传入前需进行UrlEncode编码 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_CreateDir","rid":6,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} Dir为本地路径 返回如下信息: {"ret":0,"rid":6,"data":{"Ret":"1","ErrCode":0}} F、删除指定目录及子目录所有文件 Dir传入前需进行UrlEncode编码,不能删除磁盘根目录及系统及程序目录等文件 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_DelDir","rid":7,"para":{"Dir":"D:/Zorro/WRL/Data/Temp"}} Dir为本地路径 返回如下信息: {"ret":0,"rid":7,"data":{"Ret":"1"}} G、取指定文件属性 Dir传入前需进行UrlEncode编码,不能删除磁盘根目录及系统及程序目录等文件 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_Info","rid":8,"para":{"File":"C:/Users/trade/Pictures/test/test.png"}} File为本地路径 返回如下类似信息: {"ret":0,"rid":8,"data":{"Ret":"1","Size":92095,"MD5":"B28B987EC70E1E7853F89A52CEDE68F0","Attribute":32,"CreateTime":"2020-10-07 13:07:20","LastWriteTime":"2020-07-14 10:09:43","Ver":"","CorpName":"","Desc":"","Width":1280,"Height":720}} H、取指定目录下文件和目录列表 Dir传入前需进行UrlEncode编码,不能删除磁盘根目录及系统及程序目录等文件 支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 {"req":"File_List","rid":8,"para":{"Dir":"D:/Zorro/WRL","Find":"*.*"}} Dir为本地路径 返回如下类似信息: {"ret":0,"rid":8,"data":[{"Name":"WrlSetup.exe","Size":157184,"Attr":2080,"Write":"2020-10-07 15:00:15"},{"Name":"X64"}]} 无属性Attr、大小Size和文件修改时间Write的是目录,否则是文件 I、复制文件 Src需要复制的源文件或目录,Dest复制目标文件路径或目录 Type目录复制时的文件类型,比如*.doc 文件复制时Src和Dest支持相对路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 Src和Dest传入前如有中文等特殊字符,需先进行UrlEncode编码 文件复制 {"req":"File_Copy","rid":9,"para":{"Src":"D:/Zorro/test.doc","Dest":"E:/Zorro/test.doc"}} 返回如下类似信息: {"ret":0,"rid":9,"data":{"Ret":1} 目录复制 {"req":"File_Copy","rid":9,"para":{"Src":"D:/Zorro/Wrl/","Dest":"E:/Zorro/Wrl/","Type":"*.doc"}} J、执行CMD命令 Flag 请求标记掩码 1要求非管理员权限运行 2要求返回结果 Wait 当Flag要求返回结果时,等待毫秒数 Para CMD命令参数,需要先做UrlEncode再传 {"req":"File_Cmd","rid":10,"para":{"Flag":0,"Wait":0,"Para":"net share D=D:%5C /grant:everyone,FULL"}} 返回如下类似信息: {"ret":0,"rid":10,"data":{"Ret":1} K、读取文件返回二进制数据流 File 读取的文件名,可以是全路径,也可以相对路径文件名,需要先做UrlEncode编码 Begin 读取起始位置(字节为单位),默认0从开始读,分批次读取时需要自己计算开始位置 Size 每次读取的大小,以MB为单位,如果文件过大,需要分批次读取,这里也相当于是设置单次最大获取的数据长度 {"req":"File_GetData","rid":11,"para":{"File":"C:/Users/trade/Pictures/test/test.png","Begin":0,"Size":8}} 调用方先收到如下类似信息: {"ret":0,"rid":11,"data":{"Ret":1,"Begin":0,"Size":8} 其中Ret为返回的文件长度,Begin为参入的开始位置(字节为单位),Size返回本次读取到的大小(字节为单位) 然后再收到实际发送的二进制数据流 2)、文件HTTP上传与下载服务 打开测试网页,输入地址:ws://localhost:83?sid=678&pid=762C3400-B3E5-4F00-8AA7-18E00F13E414&flag=1 点击连接; 支持的协议功能如下: A、下载文件,可批量操作 Url、File传入前需进行UrlEncode编码,支持全路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用 Cookie或Auth设置下载权限参数,传入前需要先做Base64编码,还需指定下载URL、本地保存路径及文件的File等参数,PID为小程序唯一编号,可为空 ID是请求方指定的唯一任务ID,MD5用于校验文件下载的完整性,Size用于判断文件是否下载结束及通知进度 {"req":"File_Download","rid":1,"para":{"Cookie":"","Auth":"","PID":"","Items":[{"ID":"123","Url":"http://local.zorrosoft.com/Files/template.doc","File":"","MD5":""}]}} 返回添加成功数量,重复的不计算 B、上传到指定URL的本地文件,支持批量 Url、Items子项目传入前需进行UrlEncode编码,Url为上传接收文件URL地址,ID为请求方赋予的唯一上传序号 Para POST数据包中需要传递的参数param,默认上传节点名称为upfile,否则通过NodeName设置自己的文件参数名称 Items 需要上传的文件支持全路径,如非全路径,默认使用中间件程序Data子目录作为根目录使用,PID为小程序唯一编号,可为空 DelSrc 上传成功是否删除源文件,默认0不删除 {"req":"File_Upload","rid":2,"para":{"ID":"","Url":"","Cookie":"","Auth":"","PID":"","DelSrc":0,"Para":"","Items":["c:/Newtest.jpg","c:/test.jpg"]}} 返回添加成功数量,重复的不计算 C、停止上传/下载 一般用于页面退出 不指定停止所有,指定Type时1代表下载 2代表上传 {"req":"File_Stop","rid":3,"para":{"Type":1}} D、删除数据记录 删除指定Day前数据库中的上传或下载任务记录 PID是小程序PID,可不指定 {"req":"File_Delete","rid":4,"para":{"Day":7,"PID":""}} E、查询上传或下载记录列表 Type 1代表下载 2代表上传 默认1 Status 记录状态 默认0所有 Day 指定天数以内数据库中的上传或下载任务记录 PID是小程序PID,可不指定 {"req":"File_GetList","rid":5,"para":{"Type":1,"Day":7,"PID":""}} F、开始上传或下载 Type 1代表下载 2代表上传 默认1 PID是小程序PID,可不指定 {"req":"File_Start","rid":6"para":{"Type":1,"PID":""}} 上传及下载进度及状态事件通知: /// 单个下载任务通知 ID为请求方指定的唯一下载ID Status为状态码(1等待 2 正在进行 4成功 8取消 16错误) Percent为百分比 Error错误描述 {"event":"File_Status","data":{"ID":"","Url":"","File":"","Type":1,"Status":0,"Percent":0,"Error":""}} /// 单个上传任务通知 ID为请求方指定的唯一上传ID Status为状态码(1等待 2 正在进行 4成功 8取消 16错误) Percent为百分比 Error错误描述 Ret为上传成功服务器返回的BASE64编码后的数据包 {"event":"File_Status","data":{"ID":"","Ret":"","Type":2,"Status":0,"Percent":0,"Error":""}} /// 上传或下载全部结束通知 {"event":"File_OK","data":{"Type":1"}} 通知上传或下载结束,Type 1代表下载全部完成 2代码上传全部完成 5、其它 请求参数的JSON数据包,请确保是UTF-8无签名的编码。 更多接口请求说明,请参考安装目录中的文档TestWrl.txt、SDK包中的“PluginOK开发者手册.pdf”及“PluginOK中间件安全解决方案.pdf”。 如还有疑问请直接联系客服 加微信:ZorroSoft,或加QQ群:23126938