此页面介绍了高级功能,需要具有一定的计算机编程知识。
为了丰富网站的功能,服务器可能需要处理 POST 方法提交的数据。NTYSRV 通过调用具有正确格式的 DLL 动态链接库来实现浏览器与后台交互。目前 POST 请求最大允许长度 64 MB。
此处假设 NTYSRV 服务器安装于 D:\NTYSRV,需要调用的 DLL 文件位于 D:\NTYSRV\DLL\Upload.dll,网站根目录位于 D:\NTYSRV\Public。
以下为动态链接库(DLL)文件内部的数据结构,其中参数名可任意更改。所有参数和类型均需设置正确,否则可能导致服务器出错。
子程序名 | 返回值类型 | 备 注 |
---|---|---|
UploadFile | 文本型 | D:\NTYSRV\Tmp\4ca7c9c.tmp // 存放着类似于响应的临时文件名1 |
参数名 | 类 型 | 备 注 |
Dll文件名 | 文本型 | D:\NTYSRV\DLL\Upload.dll // 该 DLL 的文件名路径 |
总服务器运行目录 | 文本型 | D:\NTYSRV // 服务器系统目录 |
网站根目录 | 文本型 | D:\NTYSRV\Public // 网站根目录 |
URL | 文本型 | /Uploads/ // HTTP 请求中 POST 之后的请求路径,不包含 ? 及之后的参数。 |
IP | 文本型 | 127.0.0.1 // 不包含端口号的连接客户端时的IP。IP |
请求头参数名 | 文本型 | .. // HTTP 请求中的请求参数名,使用两个换行符分隔。与“请求头参数值”数量相同。2 |
请求头参数值 | 文本型 | .. // HTTP 请求中的请求参数值,使用两个换行符分隔。同一个参数名中的参数值使用一个换行符分隔。2 |
Items | 文本型 | name-Name|?|name-Pswd|?|name-Address|?|name-File|?|filename-File|?| // POST 数据参数名,用“|?|”分隔。 |
Values | 文本型 | D:\NTYSRV\Tmp\4ca7c97.tmp|?|D:\NTYSRV\Tmp\4ca7c98.tmp|?|D:\NTYSRV\Tmp\4ca7c99.tmp|?|D:\NTYSRV\Tmp\4ca7c9a.tmp|?|D:\NTYSRV\Tmp\4ca7c9b.tmp|?| // POST 参数名对应的数据内容,保存于临时文件中,用“|?|”分隔。 |
注释:
1. 返回值中,类似于响应的数据格式为见下方。其中带有 下划线 的为可变值。
响应代码 / HTTP/1.1
[换行符]
响应名: 响应值
[换行符]
...
[换行符]
[换行符]
若 响应代码
中需要使用空格,请使用 下划线 替代,如 200_OK
。
2. 以下为请求头参数名与参数值格式范例,可供参考:
行号 | 请求头参数名 | 行号 | 请求头参数值 | |
---|---|---|---|---|
1 | Content-Type | 1 | text/html | |
2 |
| 2 |
| |
3 | Set-Cookie | 3 | Cookie1 | |
4 | Cookie2 | |||
5 | Cookie3 | |||
4 |
| 6 |
| |
5 | Expires | 7 | GMT Time |
IP. 此项为 2.2.5.0 及之后版本客户端的新参数,不兼容旧版。从旧版升级到新版时,请重新编译相关 DLL,在 URL
参数后方插入 IP
参数。
以下为 RunDll.xml 的数据结构,用来注册目标动态链接库以使 NTYSRV 关联。注意此文件需要复制到“Pool”文件夹下的相应服务器文件夹中才有效。
<Main>
<Post>DLL1?</Post>
<!-- 指定生效的 POST 项目名,用“?”分隔 -->
<list>
<DLL1>
<!-- POST 项目名 -->
<Url>/Uploads/</Url>
<!-- 触发 DLL 调用的URL -->
<Link>Upload.dll</Link>
<!-- 目标 DLL 文件名,位于服务器系统目录的“DLL”文件夹中 -->
<Name>Upload</Name>
<!-- 目标 DLL 文件内部的命令名 -->
</DLL1>
</list>
</Main>
若 DLL 内部未指定 Expires
值,则不返回此字段。Global.ini 中的文档有效期设置对此无效。
设置完成后,重启对应的服务器程序以生效。若设置有误,访问时将返回 500 Internal Server Error 响应。