保存用户'通过node js API在db中的照片

时间:2018-03-18 14:57:27

标签: node.js mongodb photo

我有一个使用mongoldb的节点js API和一个快速网络应用程序。 我需要存储用户的个人资料照片。

良好做法是什么?我已经看到通常会在文件系统上保存图像,但我想将我的图像存储在我的API中,以防我需要在Web应用程序之外访问它们。如何将图像从浏览器发送到我的API?

1 个答案:

答案 0 :(得分:0)

这是一个非常广泛的问题,详细的答案需要了解有关您的堆栈的更多信息,但我会尝试包含您希望让它工作的一般组件:

  • 你需要一些分析多部分文件上传的中间件,像multer这样的东西可能会引起你的兴趣!另一种选择是在API请求中将它们编码为base64,但这部分取决于它在客户端的实现方式以及文件的大小。
  • 如果您不想将文件存储在文件系统中,您需要配置multer将它们保存在内存中,然后将mongodb存储为BSON数据(二进制数据)。
  • 您可以使用GridFS,MongoDB的方法在MongoDB中存储文件,但如果文件小于16MB(它们应该用于个人资料图片),则不一定需要。
  • 如果您没有使用任何客户端JS库,您只需创建一个带有标准文件上传元素的表单并提交表单。这将作为多部分文件上传提交。请参阅example here。如果您使用的是客户端JS库,那么许多用于文件上传的插件可以使它更容易一些,但您不需要使用它们。

This blog post有一个使用node,MongoDB,multer和GridFS上传的完整示例。它不包括浏览器端代码,但您可以使用MDN中的以下示例(前面引用)作为基础:

<form method="post" enctype="multipart/form-data">
 <div>
   <label for="file">Choose file to upload</label>
   <input type="file" id="file" name="file" multiple>
 </div>
 <div>
   <button>Submit</button>
 </div>
</form>

或者更具体到您的客户端库的内容,例如this example为Angular 2使用ng2-file-upload。

祝你好运!我希望这有助于您开始一些大方向。