通过HTTP将数据从浏览器流传输到服务器的方法

是否有任何类似XHR的浏览器API可用于通过HTTP将二进制流传输到服务器?


我想提出一个HTTP PUT请求并以编程方式随时间推移创建数据。我不想一次创建所有这些数据,因为可能有大量的数据坐在内存中。一些伪代码来说明我正在得到什么:


var dataGenerator = new DataGenerator(); // Generates 8KB UInt8Array every second

var streamToWriteTo;

http.put('/example', function (requestStream) {

  streamToWriteTo = requestStream;

});


dataGenerator.on('data', function (chunk) {

  if (!streamToWriteTo) {

    return;

  }

  streamToWriteTo.write(chunk);

});

我目前有一个Web套接字解决方案,但是我希望使用常规HTTP以便更好地与某些现有服务器端代码互操作。


编辑:我可以使用最新的浏览器API。我正在查看Fetch API,因为它支持请求主体的ArrayBuffers,DataViews,Files等。如果我能以某种方式伪造这些对象之一,以便可以将Fetch API与动态数据一起使用,那将对我有用。我尝试创建一个Proxy对象,以查看是否有任何方法可以调用猴子补丁。不幸的是,似乎浏览器(至少在Chrome中)使用本机代码而不是JS语言进行读取。但是,如果我做错了,请纠正我。


当年话下
浏览 945回答 3
3回答

慕斯王

我目前正在搜索完全相同的东西(通过Ajax上游)。我目前发现的结果似乎就像我们在浏览器功能设计的前沿一样;-)XMLHttpRequest定义在步骤4中告诉bodyinit,其内容提取是(或可以是)可读流。我仍在(以非Web开发人员的身份)搜索有关如何创建此类事物并将数据馈入该“可读流”(即应为“可写流”)的“另一端”的信息,但我确实做到了找不到)。也许您会更好地进行搜索,如果找到了实现这些设计计划的方法,则可以在此处发布。^ 5斯文
打开App,查看更多内容
随时随地看视频慕课网APP