发送缓冲区到客户端进行下载

时间:2015-05-13 21:21:55

标签: node.js express dropbox-api

我在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?
})

这是我的角色(使用承诺)。当我在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);
  })
}

1 个答案:

答案 0 :(得分:2)

您使用的dbox模块看起来像stream()选项,可能更适合文件下载。您还应该拨打metadata来查找文件的mime类型。例如:

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);
    });
};