J'ai rencontré un problème qui, lorsque je télécharge une image, prend beaucoup de temps pour la télécharger même si elle ne fait que 1 Mo.
Mon processus de téléchargement consiste d'abord à utiliser un puis convertissez l'image téléchargée en base64, convertissez-la en octet puis enregistrez-la dans la base de données avec le type de données image .
Voici mon SQL (Stored Proc):
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
3 Réponses :
Je vous suggère de ne pas stocker l'image dans la base de données. Au lieu de cela, vous pouvez enregistrer l'image sur votre serveur et vous pouvez stocker le chemin de l'image dans la base de données. Sinon, vous pouvez également utiliser le stockage Blob Azure pour enregistrer l'image.
Comment faire si j'ai déjà commencé à enregistrer les images sous forme d'octet? Il y aura un problème pour obtenir des images lorsque je change la manière d'insérer l'image.
Le stockage d'images dans la base de données est un grand non car il utilise beaucoup de ressources. et en convertissant l'image en base64, vous utilisez plus de ressources, la meilleure façon de stocker des images est de les stocker dans un CDN comme amazon s3, car vous laissez Amazon prendre en charge tout le processus de téléchargement, ce qui ne mettra pas un péage sur votre base de données et votre serveur. une fois que vous téléchargez l'image sur s3, vous pouvez alors obtenir l'URL de celle-ci et l'afficher simplement dans votre html. c'est le moyen le plus efficace de stocker des images à l'aide de CDN, garantissant également que vos images sont mises en cache dans le monde entier.
Il est fortement déconseillé de stocker des images dans une base de données SQL car cela réduira considérablement les performances. La méthode recommandée est de les stocker sous forme de fichiers image purs, de stocker uniquement le chemin dans la base de données. Utilisez ensuite un simple serveur http pour servir ces fichiers statiques.
L'article lié a 13 ans. Je sais que ce sujet est toujours d'actualité, mais les capacités des bases de données évoluent constamment.
@bb qui se soucie de l'âge de l'article, quand il contient des faits qui sont encore valables
J'utiliserais FormData avec AJAX pour envoyer le fichier sur votre serveur. Ensuite, vous pouvez accéder au fichier comme vous le feriez normalement, en enregistrant le fichier en tant que fichier sur votre serveur, tout en enregistrant les données pour ce nom de fichier séparément.