我遇到一个问题,当我上传图像时,即使只有1MB,也要花费很多时间。
我的上载过程是首先使用<input type='file'>
,然后将上载的图像转换为base64,将其转换为字节,然后将其保存为image
数据类型的数据库。
这是我的SQL(存储过程):
IF EXISTS(SELECT * FROM VisitationLogs_BVL where UserIdx = @UserIdx and OutletIdx = @OutletIdx and convert(varchar, DateVisited, 23) = convert(varchar, getdate(), 23))
BEGIN
SELECT 0 'Result'
END
ELSE
BEGIN
INSERT INTO VisitationLogs_BVL(UserIdx,OutletIdx,CashierUser,IPAddress,Remarks,[Image])
VALUES(@UserIdx,@OutletIdx,@CashierUser,@IPAddress,@Remarks,@image)
SELECT @@ROWCOUNT Result, SCOPE_IDENTITY() AssignIdx
END
答案 0 :(得分:4)
我建议您不要将图像存储在数据库中。相反,您可以将映像保存在服务器中,并且可以将映像的路径存储在数据库中。否则,您也可以使用Azure Blob存储来保存图像。
答案 1 :(得分:1)
在数据库中存储图像是一个很大的问题,因为它占用了大量资源。并通过将图像转换为base64来使用更多的资源,存储图像的最佳方法是将它们存储在amazon s3之类的CDN中,因为那样您就可以让amazon负责整个上传过程,而不会数据库和服务器上的费用。将图片上传到s3之后,您就可以获取它的网址,并仅将其显示在html中。这是使用CDN存储图像的最有效方法,还可以确保您的图像在世界范围内得到缓存。
答案 2 :(得分:0)
强烈建议不要将图像存储在SQL数据库中,因为这会极大地降低性能。推荐的方法是将它们存储为纯图像文件,仅将路径存储在数据库中。然后,使用简单的http服务器提供这些静态文件。