【发布时间】:2016-12-27 16:09:01
【问题描述】:
我是 TypeScript/JavaScript 的新手,我正在尝试使用 TypeScript 和 XMLHttpRequest 2 对二进制文件的不同部分执行多部分范围请求 (RFC 7233)。
根据RFC 7233,multipart/byteranges 响应具有以下内容:
HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-Length: 1741
Content-Type: multipart/byteranges; boundary=THIS_STRING_SEPARATES
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 500-999/8000
...the first range...
--THIS_STRING_SEPARATES
Content-Type: application/pdf
Content-Range: bytes 7000-7999/8000
...the second range
--THIS_STRING_SEPARATES--
我看到两个选项:
- 将响应的正文视为二进制数据数组(设置
XMLHttpRequest.responseType = "arraybuffer"),将边界字符串转换为二进制,在二进制数据数组中搜索由边界字符串转换为二进制分隔的每个正文部分,提取每个有效负载的标头并将它们转换为字符串?或者, - 与上述类似,但将正文视为字符串(设置
XMLHttpRequest.responseType = "text"),识别由边界字符串分隔的正文部分,并将有效负载转换为二进制数据数组?
在 javascript/typescript 中处理/解析此类响应的正确方法是什么,因为响应包含多个正文部分,每个部分都有自己的标头(字符串)和有效负载(二进制)?
有没有更简单的方法?
欢迎提出任何建议。谢谢!
【问题讨论】:
-
我想知道为什么在这种情况下
Content-Length是1741。据我了解,它是整个正文的字节数,但达不到1741。也许是因为它是一个例子?
标签: javascript typescript xmlhttprequest multipart