使用套接字为聊天服务存储图像的正确方法是什么?
What is the proper way of storing images for a chat service using sockets?
好吧,我到处都看了,人们似乎对此有不同的看法。所以我继续前进,只是按照我认为正确的方式去做,我现在正在重新考虑,因为我认为在 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;
}
我正在使用 sockets.io
和 node
将 base64
连同其他消息数据发送到服务器,因此它可以保存到 mongoDB
,然后发回给其他聊天用户。一旦其他用户取回该数据,我只需将 base64
值附加到 <img />
html 标签
可能的选项:
- 将
Image
存储在服务器上的文件夹中,然后将link保存到数据库中的图像
最好将图像存储在服务器上的文件夹中,而不是数据库中的 Base64 字符串 and/or。
使用 cloudfront 在 Amazon s3 存储中存储图像的好方法。
不要在数据库中存储图像
您在数据库中只存储了一个 link 到该图像。
您的选择:
- 您可以将 base64 转换回图像并保存在磁盘上。
- 或者,不是以 base64 编码发送图像,这会增加大约 20-30% 的大小。
您可以使用单独的 http 方法将图像发送到服务器并将其保存在那里。
该方法将 return 您 link 该图像,然后您将使用 websockets 发送消息。
此外,您可以使用 Amazon S3、Google 存储或其他一些可以保存图像的服务,而不是将图像保存在您的服务器上。
但无论哪种方式,您都应该只在数据库中保留一个 link。
好吧,我到处都看了,人们似乎对此有不同的看法。所以我继续前进,只是按照我认为正确的方式去做,我现在正在重新考虑,因为我认为在 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;
}
我正在使用 sockets.io
和 node
将 base64
连同其他消息数据发送到服务器,因此它可以保存到 mongoDB
,然后发回给其他聊天用户。一旦其他用户取回该数据,我只需将 base64
值附加到 <img />
html 标签
可能的选项:
- 将
Image
存储在服务器上的文件夹中,然后将link保存到数据库中的图像
最好将图像存储在服务器上的文件夹中,而不是数据库中的 Base64 字符串 and/or。
使用 cloudfront 在 Amazon s3 存储中存储图像的好方法。
不要在数据库中存储图像
您在数据库中只存储了一个 link 到该图像。
您的选择:
- 您可以将 base64 转换回图像并保存在磁盘上。
- 或者,不是以 base64 编码发送图像,这会增加大约 20-30% 的大小。 您可以使用单独的 http 方法将图像发送到服务器并将其保存在那里。 该方法将 return 您 link 该图像,然后您将使用 websockets 发送消息。
此外,您可以使用 Amazon S3、Google 存储或其他一些可以保存图像的服务,而不是将图像保存在您的服务器上。
但无论哪种方式,您都应该只在数据库中保留一个 link。