我正在编写一个平均堆栈应用程序,我是一名初学程序员。
用户必须能够从表单字段中提交一些字符串以及可能是图像或pdf的文件。
我看过Multer然后我可以将文件的路径与MongoDB中的表单数据一起存储。
我还在GridFS上找到了一些东西。
使这项工作成为最佳和最简单的方法是什么?
答案 0 :(得分:0)
像往常一样:这取决于......
在我正在进行的其中一个项目中,我们故意选择使用数据库来存储文件。其中一个原因是通过引入文件管理要求来防止该解决方案的另一个安全和配置工件。
现在,请注意,将文件存储在磁盘上比将其存储在数据库中要快。但是如果性能不是一个非常大的问题,那么将它存储在MongoDB中也是一个非常有效的选择(毕竟,它是一个使用二进制序列化作为其核心组件之一的NoSQL解决方案。)你可以选择将文件存储在其中一个普通集合中,或存储在GridFS中。
根据经验:如果解决方案中的文件不超过16MB,则可以将它们保存为正常集合中的文档(的一部分)。如果它们大于16 MB,最好将它们保存在GridFS中。
当在GridFS中保存时,你必须使用chunck-size来找到最佳性能。
可以找到关于GridFS的博客文章here
在过去,我已经在另一个回答中发布了关于二进制和基于字符串的序列化以及GridFS here的使用的内容。注意:该帖子是在C#中,但这不应该真正构成一个问题。
希望这会有所帮助,祝你的程序员技能更好。最好的学习方法是提问和实验(很多)。