【问题标题】:Saving a users' photo in db via node js API通过节点 js API 在数据库中保存用户的照片
【发布时间】:2018-03-18 14:57:27
【问题描述】:

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

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

【问题讨论】:

    标签: node.js mongodb photo


    【解决方案1】:

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

    • 您需要一些解析多部分文件上传的中间件,可能会感兴趣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,它使用 ng2-file-upload 用于 Angular 2。

    祝你好运!我希望这可以帮助您开始大致的方向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-10
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 2020-02-13
      相关资源
      最近更新 更多