node响应服务器,如何发送来自node.js服务器的响应二进制数据

我存储的二进制数据:

var data = fs.readFileSync(path);

var image = new mongodb.Binary(data);

//open connection/collection

var record = {picname: id, content: image };

collection.save(record, {safe: true}, function(err,result){

if(err)

console.log(err.stack);

});//save

我可以看到数据库的记录大小。有二进制数据。记录大小也与文件大小相匹配。我很高兴。从蒙戈并试图响应发送

现在,检索相同的二进制数据:

var record = {picname: id};

collection.findOne(record, function(err,result){

if(err)

console.log(err.stack);

else

{

console.log('before read from db for download.');

//HOW TO READ IMAGE/BINARY DATA FROM RESULT?

//I need to send result in response. Any Idea?

console.log('before read from db for download');

}

});

我下面的代码片段发送二进制数据。它不适用于所有文件。可能是什么问题:

collection.findOne(record, function(err,result){

if(err)

console.log(err.stack);

else

{

console.log('before read from db for download. result: [' + result.picname + " ], type: " + result.imagetype);

res.end(result.content.buffer, "binary");

console.log('Responded SUCCESS: ' + id);

}

});//findOne

请让我知道如何检索并通过回复发送。

在此先感谢 DD。

+0

你说“它不适用于所有文件”。它适用于哪些文件,哪些文件不适用;有没有一种模式?另外,**如何**不是在工作?你得到一个错误,是文件损坏等? –

2014-09-02 16:49:09

+0

注意到gif有时不工作。 –

2014-09-02 18:34:51

+0

考虑使用GridFS,之后您可以使用以下方式编写:'file.stream(true).pipe(res);' –

2014-09-03 05:09:14

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后端可以使用流式上传技术缓存前端传来的二进制流。流式上传是一种将文件或二进制数据分块上传到服务器的技术,它可以有效地减少内存占用和网络带宽的消耗。 以下是一个基于Node.js的示例代码,演示如何使用流式上传技术缓存前端传来的二进制流: ```javascript const http = require('http'); const fs = require('fs'); http.createServer((req, res) => { if (req.method === 'POST') { // 创建可写流 const writableStream = fs.createWriteStream('data.bin'); // 接收数据块 req.on('data', chunk => { // 将数据块写入可写流 writableStream.write(chunk); }); // 接收完毕 req.on('end', () => { // 关闭可写流 writableStream.end(); // 返回响应 res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Upload complete'); }); } else { // 返回表单页面 res.writeHead(200, { 'Content-Type': 'text/html' }); res.end(` <form method="post" action="/" enctype="multipart/form-data"> <input type="file" name="file"> <button type="submit">Upload</button> </form> `); } }).listen(3000, () => { console.log('Server started'); }); ``` 以上代码中,我们创建了一个HTTP服务器,并在其中处理POST请求。当收到POST请求时,我们创建了一个可写流,并通过req.on('data', callback)方法接收数据块,然后将其写入可写流中。当数据接收完毕时,我们关闭可写流,并返回响应。在实际应用中,我们可以将数据块写入缓存文件或数据库中,以实现数据的持久化存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值