问题标签 [chunked-encoding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4255 浏览

java - 如何从 java servlet 中以分块响应发送 Http 预告片/页脚?

基本上我的响应标头包含

传输编码=分块,

Trailer=[我想发送的一些预告片,例如“SomeTrailer”]

将数据写入 Servlet 输出流后,我正在编写预告片“SomeTrailer:[value]”,但这并没有被 httpclient 正确解析。httpclient 将整个输入流(包括预告片)视为一个块。在将数据写入输出流但未成功后,我还尝试在响应标头中写入预告片。

请帮忙

我还没有找到任何好的来源。

0 投票
1 回答
1312 浏览

windows - libcurl 进程分块响应

最近我正在用libcurl构建一个从互联网上抓取网页的程序,我发现当使用分块编码的响应时,libcurl无法获取块头。然后我查看了libcurl在线文档,它说块头由WriteFunction处理,我我正在使用 libcurl 版本 2.18,并且我为 CURLOPT_WRITEFUNCTION 和 CURLOPT_HEADERFUNCTION 设置了回调,除了块头的单个字符之外,他们得到了任何东西,关于块编码的 libcurl 有问题吗?我怎样才能让它正常工作?谢谢ps 我要抓取的网站是http://list.taobao.com/browse/cat-0.htm,这是一个使用gbk编码的中文网站

这是我对 cliburl 所做的设置

//这里有其他东西

回调是根据需要声明的,缓冲区中有块长度传递给调试函数,但在 writefunction 中没有,我如何在 writefunction 中获取它

0 投票
2 回答
5018 浏览

php - IIS7 拒绝分块编码文件上传

我有一个使用分块编码接收文件的 Windows/Apache2/PHP 应用程序。原因是上传的文件是动态的,在传输之前它的长度是未知的。这一直开箱即用。

现在我需要将应用程序移植到 IIS7/PHP。问题是 IIS 无法接收分块文件:当文件上传时,服务器根本没有响应。我该如何解决这个问题?

请注意,在我的测试中,我什至不使用 PHP。我只是有一个 .php 扩展名,因为 IIS 拒绝 .htm 文件上的 POST(这是有道理的)。

正如 rupello 在这个答案中所建议的那样,我使用 cURL 进行了测试,以确保我的客户端没有损坏。cURL 也无法得到答案,尽管如果传输没有分块,一切正常。

我做了以下测试:

测试.php:

此命令不返回(卡在等待答案)

注意:-H "Expect:"是抑制Expect 100-Continuecurl发出的。没有这个头的结果是一样的,当然除了额外的往返。发送:

问题:服务器没有返回任何内容。服务器看起来一直在等待。卷曲不返回。

没有块编码的相同命令按预期工作:

发送:

服务器现在正确回复:

具有相同文件和请求的普通 LAMP 服务器上的测试工作正常。

那么如何在 IIS 上启用请求块编码呢?

注意:我确实尝试了相关的 ASP 参数,但无济于事:

0 投票
1 回答
317 浏览

c - libcurl C API > 使用 2MB 缓冲区以块形式发布数据

如何使用 2MB 缓冲区以块的形式从文件中发布数据(特定范围,例如 150-250000 字节应该从文件中发布)?默认情况下,libcurl 使用 16K(无法更改)缓冲区,对于视频流来说太小了。

0 投票
1 回答
124 浏览

c - libcurl C API > POST 从 URL 获取的数据范围

如何发布从 URL 而非文件中获取的数据范围?假设我需要从http://localhost/video.mp4 (A) 读取 150-250000 字节并将这些数据以块的形式顺利发布到http://172.32.144.12 (B) 以便看起来数据是从(A)到(B)?

0 投票
1 回答
433 浏览

c# - c#: 分段保存 JPG

我目前正在开发 ac# 开源照片马赛克软件(Sourceforge Link)。该软件将大量小照片(图块)拼接成一张大图像。

由于最终的图像大小通常为 20k 像素乘以 15k 像素,因此我只保存了一张关于如何在内存中排列图块的地图。为了构建最终图像,我将其构建为部分,即 8 行带(也可以是任何其他数字)。

在 bmps 的情况下,通过首先写入 bmp 标头并随后将 ARGB 数据附加到此文件,可以轻松地逐块保存此数据。

但是生成的 bmp 太大而无法进一步处理(例如,将它们交给一些海报印刷公司)。因此,我想将这些大图像保存为我的硬盘上的 jpg。

现在的问题是,由于 jpg 是压缩的,因此以块的形式写入数据似乎非常棘手(普通的 Bitmap.Save() 函数将首先将完整图像加载到内存中,因此不适用),因为写入纯的、未压缩的 RGB 数据不会的。

应该存在在聚会中编写 jpg 的基本功能,因为据我所知,jpg 的压缩算法适用于块或 8x8 像素。

我查看了几个图像库(FreeImage、GraphicsMagick、LibTiff.NET)来寻找这个问题的解决方案,但找不到任何解决方案。LibTiff 基本上具有所需的功能,但仅适用于 tiff 图像格式。

非常感谢你的帮助!最大限度

0 投票
2 回答
2164 浏览

node.js - 连接 'audio/x-wav' 缓冲区并使用 'Transfer-Encoding': 'chunked'

这个问题是前一个问题的后续问题,感谢@thejh 解决。

我正在尝试将文本转换为音频并将数据作为“分块”数据提供给客户端。到目前为止,我的标题看起来像这样:

然后我将文本片段转换为队列中的音频(我将其作为 base64 编码数据返回),并像这样提供它们:

所有信息都被传输并发送到客户端,但由于某种原因,浏览器(我在 Firefox 7.0.1 中对其进行测试)正在播放它并在第一个块之后停止。这是显示音频过早结束的结果/演示,这是在 github上运行的代码。

为什么是这样?这是因为 x-wav 数据具有像 End 这样的元数据或在标头/元数据中指定长度吗?如果是这样,这个元数据是什么,是否有某种方法可以编辑它以便浏览器成功连接接收到的块?

我知道标头'Content-Length': Buffer.length,但在这种情况下,我不知道整个流将持续多长时间。

任何人都可以提供建议。是否可以在发送缓冲区之前编辑缓冲区,以便浏览器正确连接它们?

0 投票
2 回答
4742 浏览

java - 如何通过 nginx 发出分块请求

似乎 nginx 不能很好地支持分块请求。但我试图得到一个更明确(和当前)的答案。我有一个客户端从设置标头的 Java 客户端向服务器发出 SOAP 请求Transfer-Encoding: chunked。当我直接连接到 Tomcat 上的应用程序时,一切正常。

但是当我将 nginx 放在它们之间时,事情就破裂了。

添加一些细节:我正在使用 CloudFoundry。我正在使用 Micro Cloud Foundry 来确认在没有 nginx 的情况下事情是否按预期工作。但是我的要求是使用cloudfoundry.com,所以我没有能力绕过那里的nginx。

这个问题和答案说这可能是我唯一的解决方法:http ://wiki.nginx.org/NginxHttpChunkinModule 。但该解决方法不可用,因为我无法修改 cloudfoundry.com 上的配置。

这个问题看起来也很相似,但它实际上涵盖了这个要求的反面。它涵盖了分块响应而不是分块请求。

那么客户端上的任何更改如何解决这个问题?是否可以同时发送Transfer-Encoding: chunkedContent-Length: 123作为标题?这个领域对我来说是新的,但是从像 Apache HttpComponents 这样的项目看来,可以设置长度或分块,但不能同时设置两者。分块的要点是您不需要知道请求开始时的长度。我可以告诉我的客户使用 HTTP/1.0 并在不分块的情况下与 nginx 一起玩吗?还有其他我忘记的解决方法吗?

0 投票
1 回答
180 浏览

gzip - 我可以跨多个 HTTP 块拆分 gziped 内容编码吗?

我可以将 gzip 压缩的内容编码拆分为多个块吗?是否有任何已知的实现失败?

0 投票
2 回答
3957 浏览

groovy - Groovy HTTPBuilder:从 GZIPed Chunked 响应中获取实体内容

我需要向 Web 服务器发送 POST 请求,并能够读取所述服务器发送的响应。我尝试使用带有此代码的 HTTPBuilder 库:

执行此代码时出现异常:

我打开了电线和接头的调试,这就是我得到的:

所以我猜这个问题来自于发送响应的事实:

还有另一种方法吗?我做错了吗?我尝试谷歌搜索了一段时间,并没有找到一个好的线索。在我看来,HTTPBuilder 库在闭包结束后获取实体内容,但是一旦我离开那个闭包,我就无法访问实体内容(例外是:无法访问关闭的流)

我真的很感激这方面的帮助;)