大家好

请,我正在研究使用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/

10-11 09:01
查看更多