gpt4 book ai didi

javascript - 使用gridFS在mongoDB中存储文件(图像)

转载 作者:可可西里 更新时间:2023-11-01 10:31:40 27 4
gpt4 key购买 nike

我正在用 angularJS 编写这个网页,我希望人们在其中编辑和存储文本和图像。我创建了一个文件上传功能,让您可以从用户计算机上传文件。问题是将此文件存储到 mongoDB 中。我已经阅读了很多关于 gridFS 的示例,但没有一个与我正在尝试做的完全匹配。这是我的代码:

网络服务器.js:

app.post('/uploadFile', function(req,res){
console.log("Retrieved:");
console.log(req.files);

var Grid = require('gridfs-stream');
var gfs = Grid(DB, mongoose.mongo);
// streaming to gridfs
var writestream = gfs.createWriteStream(req.files.file);
fs.createReadStream(req.files.file.path).pipe(writestream);

服务.js:

function uploadFilesToServer(file){ 
var fd = new FormData();
fd.append("file", file);
var deferred = $q.defer();
console.log("trying to save:");
console.log(file);
$http({
method:"POST",
url: "uploadFile",
data: fd,
withCredentials: true,
headers: {'Content-Type': undefined },
transformRequest: angular.identity
}).success(function(data){
var returnValue = [true, file, data];
deferred.resolve(returnValue);
}).error(function(data){
var returnValue = [false, file, data];
deferred.resolve(returnValue);
});
return deferred.promise;
}

目前,我在运行代码时没有收到任何错误消息,但图像也没有存储在 db.files 或 db.chunks 中。感谢您的帮助。

最佳答案

如果用户未设置,GridFS-stream 通常将其数据存储在 db.fs.files/db.fs.chunks 中。

要更改它,您必须添加:

{
....
root: 'my_collection'
....
}

到 gridfs-stream 选项。

来自 NPM 文档:

createWriteStream

To stream data to GridFS we call createWriteStream passing any options.

var writestream = gfs.createWriteStream([options]);
fs.createReadStream('/some/path').pipe(writestream);
Options may contain zero or more of the following options...

{
_id: '50e03d29edfdc00d34000001', // a MongoDb ObjectId
filename: 'my_file.txt', // a filename
mode: 'w', // default value: w+, possible options: w, w+ or r,
see [GridStore]
(http://mongodb.github.com/node-mongodb-native/api-generated/gridstore.html)

//any other options from the GridStore may be passed too, e.g.:

chunkSize: 1024,
content_type: 'plain/text',
// For content_type to work properly, set "mode"-option to "w" too!
root: 'my_collection',
metadata: {
...
}
}

参见 https://www.npmjs.org/package/gridfs-stream了解更多。

关于javascript - 使用gridFS在mongoDB中存储文件(图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781267/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com