发送一个缓冲区给客户端下载

我从Dropbox的Node.js服务器上下载了一个Buffer。 我想发送缓冲区(或将其转换为文件并发送给客户端),并立即开始在客户端下载。 我在这里错过了什么?

var client = DBoxApp.client(req.session.dbox_access_token); client.get(req.body.id, function(status, data, metadata) { // WHAT DO I DO HERE? }) 

这是我的angular度(使用承诺)。 当我console.log(响应我得到一个对象,包括缓冲区)。

 function(id, cloud){ return $http.post('/download/'+cloud, {id: id}).then(function(response){ console.log(response) }, function(response) { return $q.reject(response.data); }) } 

看起来你正在使用的dbox模块有一个stream()选项,可能更适合文件下载。 您还应该调用metadata来查找文件的MIMEtypes。 例如:

 var middleware = function(req, res, next) { var client = DBoxApp.client(req.session.dbox_access_token); var file = req.body.id; client.metadata(file, function(status, reply) { res.setHeader('Content-disposition', 'attachment; filename=' + file); res.setHeader('Content-type', reply.mime_type); client .stream(file) .pipe(res) .on('error', next); }); };