gpt4 book ai didi

javascript - 使用 NodeJS 的多部分/混合响应

转载 作者:行者123 更新时间:2023-12-03 08:59:33 25 4
gpt4 key购买 nike

我有以下场景:使用 NodeJS 返回包含以下项目的多部分/混合响应,我们控制通信的两端,因此我们应该能够消除互操作性问题。

  1. 包含描述每个 ZIP 的 Node 列表的 JSON 文件,即[{name: test1, desc: Test1 描述, md5: 1234ABCD, 文件: zip-01.zip}, {name: test1, desc: Test1 描述, md5: 1234ABCD, 文件: zip-02.zip}]
  2. 从 mongo gridfs 存储读取 ZIP 文件
--whoop
Content-Disposition: attachment; name="zip"; filename="tobi.zip"
Content-Type: application/zip

... data here ...
--whoop
Content-Disposition: form-data; name="name"
Content-Type: text/plain

Tobi
--whoop--

我需要将其流式传输回用户,以便他们可以处理 JSON 文件,并根据需要展开他们感兴趣的特定 ZIP 文件。

查看 API 指南 http://expressjs.com/api.html我不明白这怎么可能?我已正确返回单个 ZIP 文件,但需要支持此业务场景。

我正在尝试创建类似于以下内容的内容: HTTP multipart response using Perl or PHP

资源应包含一个 JSON 文件和所有关联的 ZIP 文件。

感谢任何帮助。谢谢。

J

最佳答案

解决方案如下所示 - 根据需要写入响应的项目​​进行调用。

                res.writeHead(200, {
'Content-Type': 'multipart/x-mixed-replace; charset=UTF-8; boundary="' + SNAPSHOT_BOUNDARY + '"',
Connection: 'keep-alive',
Expires: 'Fri, 01 Jan 1990 00:00:00 GMT',
'Cache-Control': 'no-cache, no-store, max-age=0, must-revalidate',
Pragma: 'no-cache'
});

feed.snapshots.forEach(function (item) {
writeResponse(item);
});

function writeResponse(item) {
var buffer = new Buffer(0);
var readStream = getGridFs().createReadStream({root: 'items', _id: snapshotItem._id});

readStream.on('error', function (err) {
if (err) {
// handle error
}
});

readStream.on('data', function (chunk) {
buffer = Buffer.concat([buffer, chunk]);
});

readStream.on('end', function () {
res.write('\n\n' + SNAPSHOT_BOUNDARY + '\n');
res.write('Content-Disposition: filename="' + item.filename + '" \n');
res.write('Content-Type: application/zip \n');
res.write('Content-length: ' + buffer.length + '\n\n');
res.write(buffer);
});
}

仍然存在 super 测试解析多部分响应的问题 - 票证开放于 https://github.com/felixge/node-formidable/issues/348

关于javascript - 使用 NodeJS 的多部分/混合响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32354748/

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