使用Express将文件读取到节点中的字节

在我正在处理的Web应用程序上,用户可以上传PDF文件。 我想阅读这个PDF文件到一个字节缓冲区,我可以传递到我的数据库将其保存为一个BLOB。 我正在使用Express框架在Node中执行此操作。

目前,我有以下几点:

上传表单:

<form id='uploadForm' method='post' enctype='multipart/form-data'> <div class='form-group'> <div class='form-inline'> <label for='file'>File:</label> <input type='file' name='file'> </div> </div> <!--- some other fields ---> </form> 

服务器端:

 router.post('/', function(req, res) { var file = req.files.file; var path = file.path; var fsiz = file.size; var buffer = new Buffer(fsiz); fs.read(file, buffer, 0, fsiz, 0, function (err, bytesRead, buffer) { console.log(err); console.log(bytesRead); console.log(buffer); }); }); 

这给了我fs.read函数调用一个Bad argument错误。 什么是错的,我该如何解决?

fs.read()的第一个参数应该是一个文件描述符对象,由fs.open()返回。

你可以首先调用fs.open() ,或者使用fs.readFile() ,它需要一个path:

 router.post('/', function(req, res) { var file = req.files.file; var path = file.path; var fsiz = file.size; var buffer = new Buffer(fsiz); fs.open(path, 'r', function(err, fd) { fs.read(fd, buffer, 0, fsiz, 0, function (err, bytesRead, buffer) { console.log(err); console.log(bytesRead); console.log(buffer); }); }); }); 
 router.post('/', function(req, res) { var file = req.files.file; var path = file.path; var fsiz = file.size; var buffer = new Buffer(fsiz); fs.readFile(path, function (err, data) { console.log(err); console.log(data); }); });