1
votes

Le téléchargement d'image prend beaucoup de temps à enregistrer dans la base de données

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


1 commentaires

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.


3 Réponses :


4
votes

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.


1 commentaires

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.



1
votes

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.


0 commentaires

0
votes

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.

Plus d'infos: https://www.microsoft.com/en-us/research/publication/to-blob-or-not-to-blob-large-object- stockage dans une base de données ou un système de fichiers


2 commentaires

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