客户想通过浏览器调用CGI接口直接下载录像数据,尝试了好多次,用下面的回复实现浏览器直接下载录像
浏览器请求体
GET /cgi-bin/record.cgi?userName=admin&password=admin123&action=playBack&cameraID=1&startTime=20240311152000&endTime=20240311152500 HTTP/1.1
Host: 192.168.2.111
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
回复例子
HTTP/1.1 200 OK
Content-disposition: attachment; filename = "playback-20240311152000-20240311152500.mp4"
Transfer-Encoding: chunked
Content-Type: video/x-matroska
\r\n
1a(后面数据长度,用十六进制表示)\r\n
(26字节长度数据)\r\n
22b8(后面数据长度,用十六进制表示)\r\n
(8888字节长度数据)\r\n
1a0a(后面数据长度,用十六进制表示)\r\n
(6666字节长度数据)\r\n
0(最后一条数据以0结尾)\r\n\r\n
实际的回复部分截取
HTTP/1.1 200 OK
Content-disposition: attachment; filename = "playback-20240311152000-20240311152500.mp4"
Transfer-Encoding: chunked
Content-Type: video/x-matroska
18
....ftypmp42....mp42isom
7c00
...smdat...!'B.3.@..Z.P............29.>.]........(.<....:%. ..
XN . .?.4._...A2'z|e..&|}o..... ( .'7