我想将一些文档作为base64字符串存储在数据库中。然后,当使用HTTP请求这些文档时,我希望ExpressJS解码base64文档并返回它们。所以像这样:
app.get('/base64', function (req, res) {
//pdf is my base64 encoded string that represents a document
var buffer = new Buffer(pdf, 'base64');
res.send(buffer);
});
代码只是为了让我知道我想要完成的事情。我需要使用流吗?如果是这样,我该怎么做?或者我应该将这些文档写入临时目录,然后提供文件?如果可能的话,跳过这一步会很高兴。谢谢!
更新:为了清楚起见,我希望这可以使用典型的HTTP请求。因此,用户将单击其浏览器中的链接,该链接将带他到一个从数据库返回文件的URL。似乎必须可能,Microsoft SharePoint将序列化文件存储在SQL数据库中并通过http请求返回这些文件,我不相信它会首先将所有这些文件写入临时位置。我感觉像nodejs流可能是答案,但我对流媒体不是很熟悉。
答案 0 :(得分:1)
在将文件表示保存到DB之前,您只需使用带有base 64编码的toString方法:
var base64pdf = pdf.toString('base64');
从db获取base64文件表示后,使用缓冲区按如下方式将其转换回文件:
var decodedFile = new Buffer(base64pdf, 'base64');
有关缓冲区用法的更多信息,请访问此处 - NodeJS Buffer
至于如何从快速服务器向客户端发送缓冲区,Socket IO应解决此问题。 使用socket.emit - 将事件发送到由字符串名称标识的套接字。任何 可以包括其他参数。
支持所有数据结构,包括Buffer。 JavaScript的 函数无法序列化/反序列化。
var io = require('socket.io')();
io.on('connection', function(socket){
socket.emit('an event', { some: 'data' });
});
所需的文档