gpt4 book ai didi

javascript - 带有分块请求正文的 XmlHttpRequest?

转载 作者:行者123 更新时间:2023-11-30 06:40:43 28 4
gpt4 key购买 nike

我知道如何使用 XmlHttpRequest 对象在 javascript 中处理分块下载。有什么方法可以使用 javascript 执行分块上传,打开连接但只一点一点地上传数据 block ?

我知道使用 Http 1.1 服务器应该可以进行分块上传,并且已经找到了很多关于使用各种其他平台(C# java 等)进行分块上传的引用资料,但是没有找到任何关于在浏览器中使用 javascript 进行分块上传的引用资料.

编辑:用例是将数据流式传输到服务器,而不是上传大文件,类似于使用分块响应将数据流式传输到客户端。这是发出单独的 ajax 请求的替代方法,因为从客户端到服务器的数据 block 非常频繁(< 0.5 秒间隔)。

最佳答案

截至今天(2021 年 11 月),我认为浏览器仍然很大程度上缺少对使用 HTTP 分块数据传输的上传的支持。

如果您查看 the Request (Fetch API) 的浏览器支持矩阵的“在请求正文中发送 ReadableStream”列,你可以看到它目前对于除“Deno”之外的所有浏览器都是“否”。但是,您会注意到该列旁边的“实验”标志。因此,它可以在某些浏览器(例如 Chrome)中实验性地使用。不过,我不会对它很快成为主流抱有信心。

HTTP 分块数据传输编码在技术上对于一次发送几 block 数据不是必需的,我相信常规 HTTP 数据传输也只能一次发送几 block 数据,但“分块”是在 TCP 级别完成的(如果我在这里错了,请纠正我)。因此,这两种协议(protocol)都可用于流式传输文件上传。 WebSockets 当然也是另一种选择。选择哪种协议(protocol)的主要区别在于您是否事先知道流的最终长度。

如果您需要流式传输事先不知道长度的上传数据(例如实时视频、视频电话 session 、远程桌面 session 、聊天等),那么最好的选择可能是 the WebSocket API (或建立在它之上的东西)。

如果您需要流式传输您事先知道长度的上传数据(文件、图像、视频等),那么我相信您最好的选择可能是使用 the Fetch API 的普通 POST 或 PUT |甚至 the old XmlHttpRequest API .

关于javascript - 带有分块请求正文的 XmlHttpRequest?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11498596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com