Javascript gridfs stream createWriteStream未上载数据
我使用以下代码在mongodb中创建一个文件。我没有错。但是当我检查我的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
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