Javascript gridfs stream createWriteStream未上载数据

Javascript gridfs stream createWriteStream未上载数据,javascript,angularjs,node.js,mongodb,gridfs,Javascript,Angularjs,Node.js,Mongodb,Gridfs,我使用以下代码在mongodb中创建一个文件。我没有错。但是当我检查我的Test数据库时,没有看到上传的内容。我做错了什么 var GridStrm = require('gridfs-stream'); console.log('Logo Upload'); var conn = mongoose.createConnection('localhost', 'Test', 27017); var gfs = GridStrm(conn.db, mongoose.mo

我使用以下代码在mongodb中创建一个文件。我没有错。但是当我检查我的
Test
数据库时,没有看到上传的内容。我做错了什么

var GridStrm = require('gridfs-stream');
    console.log('Logo Upload');

    var conn = mongoose.createConnection('localhost', 'Test', 27017);

    var gfs = GridStrm(conn.db, mongoose.mongo);       

    var writeStream = gfs.createWriteStream('file.txt');
    fs.createReadStream('d:\\somepath').pipe(writestream);
我得到错误
错误:EISDIR,读取

我有新的错误:-

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Cannot determine state of server
    at canCheckoutReader 
我进一步尝试了以下代码:-

req.pipe(gfs.createWriteStream({
        filename: 'test'
    }));
    res.send("Success!");
但仍然没有结果。

一个更简单的例子

var mongoose=require('mongoose');
var Grid=require('gridfs-stream');
var fs=需要('fs');
var conn=mongoose.createConnection('localhost','test',27017);
连接一次('打开',函数(){
var gfs=电网(conn.db,mongoose.mongo);
var source=fs.createReadStream('file.txt');
var target=gfs.createWriteStream({
文件名:“file.txt”
});
来源.管道(目标);
});
这会将以下内容放入集合:

> db.fs.files.find()
{
  "_id" : ObjectId("531470dc8b79087430b2e38d"),
  "filename" : "file.txt", 
  "contentType" : "binary/octet-stream",
  "length" : 138,
  "chunkSize" : 262144,
  "uploadDate" : ISODate("2014-03-03T12:09:00.896Z"),
  "aliases" : null,
  "metadata" : null,
  "md5" : "87be58f21745384bcd13743bde9ae8fb"
}
所以你的问题是:

  • 当你第一次发布时,你有一个流,但你没有使用它
  • 你以为那就是你告诉它要用什么文件的地方
  • 在所有gridFS方法中,文件名只是发送到服务器的标签。其他方法用于处理真实文件。因此,如果您仍然感到困惑,请尝试代码,然后更改此行:

        var target = gfs.createWriteStream({
            filename: 'dont-exist.txt'
        });
    

    将使用相同的文件内容,只是服务器上有一个新标签。

    您误解了上一篇文章中给出的链接中的代码。是的,您已经创建了一个流,但是您没有对它做任何操作。该帖子使用管道将其输出发送到流。@NeilLunn,我看到了新的错误…:)
    EISDIR
    表示您试图读取目录而不是文件。Dude。读你的答案。还要注意的是,你还没有接受我之前给你的答案,即使你使用的是从这里获得的信息。事实上,我没有回答这个问题,只是给了你一个链接。@Anup看看代码并复制它。我输入了一个完整的工作示例。@Anup请查看代码并理解原因。阅读节点回调,如果您要使用express,请仔细阅读
    req
    res
    上的文档。是的,我会的…现在我的下一个任务是使用用户选择的
    input type='file'
    保存上载的图像…如果您仍然需要。。。我有一个疑问…在我的html中,我有一个
    input type='file'
    用户从这里选择图像…然后这个
    img
    由GridFS存储。。。那么,是否需要将此用户选择的图像存储在
    文件夹中
    …或者直接转到
    GridFS