如何从Node.js中的$ http请求返回ArrayBuffer?

我发送了一个$http.post请求从Angular.js到Node.js为了得到一个ArrayBuffer如下:

 $http.post('/api/scholarships/load/uploaded-files', Global.user, {responseType:'arraybuffer'}).success(function(ab){ console.log(ab); // Return ArrayBuffer {} }); 

然后,在Node.js中,我检索上传的文件数据,并将一个Buffer对象转换为ArrayBuffer对象:

 exports.loadUploadedFiles = function(req, res) { db.UserFile.findAll().success(function(files) { var buffer = files[0].dataValues.data; // Get buffer var arrayBuffer = new ArrayBuffer(buffer.length); // Start transforming Buffer to ArrayBuffer var views = new Uint8Array(arrayBuffer); for(var i = 0; i < buffer.length; ++i) { views[i] = buffer[i]; } res.type('arraybuffer'); res.send(arrayBuffer); // Send the ArrayBuffer object back to Angular.js }).error(function(err) { console.log(err); res.sendStatus(500); }); }; 

当我试图打印$http.post上面的响应时,我总是得到ArrayBuffer{} 。 我做错了什么? 任何帮助,将不胜感激。

没有必要在服务器端创build一个ArrayBuffer。 实际上,只要在node.js中返回Buffer就可以了。 ArrayBuffer是客户端/浏览器端的一个概念,用于将来自服务器的数据解释为ArrayBuffer。 你得到“ArrayBuffer {}”的原因可能是因为node.js是toString()在res.send()上的ArrayBuffer,因为它不理解对象。 所以试试这个

 exports.loadUploadedFiles = function(req, res) { db.UserFile.findAll().success(function(files) { var buffer = files[0].dataValues.data; // Get buffer res.send(buffer); }).error(function(err) { console.log(err); res.sendStatus(500); }); };