在 TypeScript 中使用 chai 处理 BLOB(mime 类型八位字节流)的正确方法是什么?



我在正在进行的项目中获得了我在 TypeScript 中的第一次经验,目前试图弄清楚处理从服务器传递的 blob(csv 文件(的正确方法是什么。

在客户端团队使用TypeScript,chai,chai http。

服务器返回 200 个代码,{}正文为空。

这里的代码:

chai.usees(chaiHttp);
const response = chai.request(endpoint/csv)
.set('Content-Type', 'application/octet-stream');
response.status // 200
response.body   // {}

我编写这个概念是为了避免从项目中复制/粘贴代码(我不确定这个项目的 NDA 范围(。我认为理解含义就足够了。

除了标题之外,我还需要其他任何东西来获取我的 csv 文件吗?我希望它在这里作为 base64 字符串。

附言 这是一个正在进行的开发,所以问题可能出在服务器上或缺乏特定的业务知识,但我必须确保客户端没有问题。

线索就在这里

事实上,在带有chai的TypeScript中,我们必须做一些额外的工作来处理二进制类型,并且需要特殊的标头。

chai.request(url)
.get('/api/exercise/1?token=' + token)
.buffer()
.parse(binaryParser)
.end(function(err, res) {
if (err) { done(err); }
res.should.have.status(200);
// Check the headers for type and size
res.should.have.header('content-type');
res.header['content-type'].should.be.equal('application/pdf');
res.should.have.header('content-length');
const size = fs.statSync(filepath).size.toString();
res.header['content-length'].should.be.equal(size);
// verify checksum                
expect(md5(res.body)).to.equal('fa7d7e650b2cec68f302b31ba28235d8');              
});
const binaryParser = function (res, cb) {
res.setEncoding('binary');
res.data = '';
res.on("data", function (chunk) {
res.data += chunk;
});
res.on('end', function () {
cb(null, new Buffer(res.data, 'binary'));
});
};

(代码通过上面的链接属于作者(

服务器响应正确200代码和正文中的{}

最新更新