使用套接字存储聊天服务图像的正确方法是什么?

时间:2015-11-24 09:59:36

标签: node.js mongodb socket.io

好的,所以我到处寻找,人们似乎对此有不同意见。所以我继续前进,只是做了一个我认为是正确的方式,我现在有了第二个想法,因为我认为在mongodb数据库中存储一个巨大的base64字符串是荒谬的。

以下是我现在正在做的代码片段:

var imgUploader;
   // Base64Img holds the base 64 value from the chosen file.
    if(base64Img != ""){

         // Send message to chat and save to mongo: 
          socket.emit('clientMessage', {
               message: $('#chatMessage').val(), 
               name: user.name,
               userId: user.userId,
               image : base64Img
          });
        $("#imgUpload").val("");
        base64Img = "";
        return;
}

我正在使用base64sockets.ionode以及其他消息数据发送到服务器,因此可以将其保存到mongoDB,然后发回给其他聊天用户。一旦其他用户获得该数据,我只需将base64值附加到<img /> html标记

可能的选项:

  1. Image存储在服务器上的文件夹中,然后将链接保存到数据库中的图像

2 个答案:

答案 0 :(得分:0)

最好将图像存储在服务器上的文件夹中,而不是存储在Base64字符串和/或DB中。

使用cloudfront将图像存储在Amazon s3存储中的好方法。

答案 1 :(得分:0)

不要将图像存储在数据库中

您只在DB中存储指向该图像的链接。

您的选择:

  • 您可以将base64转换回图像并保存在磁盘上。
  • 或者,不是以base64编码发送图像,而是增加了大约20-30%的大小。 您可以使用单独的http方法将图像发送到服务器并将其保存在那里。 该方法将返回一个指向该图像的链接,然后您将使用带有消息的websockets发送。

除了在服务器上保存图像外,您还可以使用Amazon S3,Google Storage或其他一些可以保存图像的服务。

但不管怎样,你应该只在你的数据库中保留一个链接。

相关问题