Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用Express将文件上传保存到Mongo DB大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
this tutorial之后,我设法创建了一个带有文件输入的表单,该表单将文件上传到指定的目录.这是花花公子和所有,但它没有保存任何东西到数据库,我没有任何参上传到Jade模板中显示文件.

这是我正在做的事情:

// 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")

updatE

我忘了补充说我正在使用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,请注明来意。