在我正在处理的网络应用程序上,用户可以上传PDF文件。我想将这个PDF文件读取到一个字节缓冲区,我可以将其传递给我的数据库以将其保存为BLOB。我在Node中使用Express框架进行此操作。
目前,我有以下内容:
上传表单
<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);
});
});
这会在Bad argument
函数调用中出现fs.read
错误。有什么问题,我该如何解决?
答案 0 :(得分:2)
fs.read()
的第一个参数应该是fs.open()
返回的文件描述符对象。
您可以先拨打fs.open()
,也可以使用fs.readFile()
,这需要一条路径:
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);
});
});