大佬教程收集整理的这篇文章主要介绍了node.js – 使用Express将文件上传保存到Mongo DB,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是我正在做的事情:
// add new bulleTin exports.addbulleTin = function(db) { return function(req,res) { var tmp_path = req.files.coverimage.path; // set where the file should actually exists - in this case it is in the "images" directory var target_path = './public/uploads/' + req.files.coverimage.name; // move the file from the temporary LOCATIOn to thE intended LOCATIOn fs.rename(tmp_path,target_path,function(err) { if (err) throw err; // delete the temporary file,so that the explicitly set temporary upload dir does not get filled with unwanted files fS.Unlink(tmp_path,function() { if (err) throw err; res.send('File uploaded to: ' + target_path + ' - ' + req.files.coverimage.size + ' bytes'); }); }); // Submit to the DB collection.insert(req.body,function (err,data) { if (err) { res.send("There was a problem adding the information to the database."); } else { res.LOCATIOn("index"); res.redirect("/"); } }); } };
第二部分是将req.body(非文件输入的其他表单字段)插入Mongo数据库.我想简单介绍req.files以及它插入req.body的位置,但这不起作用.
我想,我的困惑在于Mongo的工作方式.我不是数据库专家,但是当你“上传”一个图像时,实际的图像文件应该转到数据库,还是只应该添加一个引用(如图像名称和应用程序中的位置)?
总而言之,我只想将上传的图像(或对它的引用)保存到Mongo数据库,以便我可以在Jade模板中引用它以显示给用户.
对于它的价值,这里是表单的相关部分(使用Jade进行模板化):
form.new-bulleTin(name="addbulleTin",method="post",enctype="multipart/form-data",action="/addbulleTin") input(type="file",name="coverimage")
我忘了补充说我正在使用connect-multiparty
@H_997_9@multipart = require("connect-multiparty"),multiparty = multipart(); app.post("/addbulleTin",multiparty,routes.addbulleTin(db));
因此,您可以在代码中使用target_path变量,该变量显示在磁盘上查找文件的位置.因此,如果您想存储引用,那么您可以使用它,并且将来读取您的mongo文档将具有该路径信息,以便您可以再次访问该文件.
正如您所说,您可能不希望传递整个res.body但只是像这样访问它的属性并构建您自己的文档,在其中插入/更新任何内容.有关访问文件信息的信息在express documentation中.
如果您决定将文件内容放入mongo文档中,那么只需读取文件内容即可.这里File System操作符的核心节点文档可能对您有所帮助.特别是read的功能.
从MongoDB的角度来看,您只需将该内容添加到任何文档字段,它就不会关心和处理二进制类型.只要您的尺寸低于16MB BSON限制.
超过这个限制,也许你感兴趣的是GridFS.作为参考,SO上有this question可以为你提供一些如何做到这一点的见解.
以上是大佬教程为你收集整理的node.js – 使用Express将文件上传保存到Mongo DB全部内容,希望文章能够帮你解决node.js – 使用Express将文件上传保存到Mongo DB所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。