大家好
请,我正在研究使用nodeJS的项目,并且我想知道,我的节点客户端必须以哪种格式将文件发送到服务器(它是以base64格式还是其他格式?)。
我的客户是:
//client.js
$('#file').on('change', function(e){
encode64(this);
});
function encode64(input) {
if (input.files){
chap.emit('test', { "test" : input.files[0] });
var FR= new FileReader();
FR.readAsDataURL(input.files[0]);
FR.onload = function(e) {
chap.emit('test', { "test" : e.target.result } );
}
}
}
我的服务器端是:
socket.on('test', function(e){
var gs = new gridStore(db, e.test,"w");
gs.writeFile(new Buffer(e.test,"base64"), function(err,calb){
if (!err)
console.log('bien passe');
else
console.log('erreur');
});
});
但这不起作用,我得到这个错误:
TypeError: Bad argument
at Object.fs.fstat (fs.js:667:11)
有人可以帮助我吗?
最佳答案
通常,这就是您存储到gridFs中的方式。我用它来存储文件。希望它能工作。
fs = require('fs'),
var gfs = require('gridfs-stream');
var form = new multiparty.Form();
form.parse(req, function (err, fields, files) {
var file = files.file[0];
var filename = file.originalFilename; //filename
var contentType = file.headers['content-type'];
console.log(files)
var tmpPath = file.path ;// temporary path
var writestream = gfs.createWriteStream({filename: fileName});
// open a stream to the temporary file created by Express...
fs.createReadStream(tmpPath)
// and pipe it to gfs
.pipe(writestream);
writestream.on('close', function (file) {
// do something with `file`
res.send(value);
});
})
关于node.js - 以哪种格式发送文件以将其保存在gridfs上?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32649935/