6
votes

Comment stocker des fichiers image dans le backend d'un site

Je construis un site et je viens de commencer à développer le backend.

Le point de mon site sera d'afficher des images à un visiteur. À des fins de développement, j'aimerais tout tester avant d'aller vivre.

J'aimerais savoir quelle est la meilleure façon de stocker ces images. Je viens de terminer la configuration de mon serveur Wamp et j'ai ajouté une nouvelle DB avec phpmyadmin. J'ai trouvé que je peux stocker chaque image directement dans la base de données MySQL en tant que type de données BLOB. Mais est-ce la meilleure façon d'aller?

Merci!


0 commentaires

4 Réponses :


5
votes

stocker des fichiers dans la base de données a deux avantages principaux:

  1. sécurité de la transaction. Si l'utilisateur édite son profil (photo et date de naissance), puis être sauvegardé ou non en cas de restauration / erreur.

  2. Un seul point de sauvegarde. Il ne vous arrivera pas d'oublier de sauvegarder le répertoire contenant des avatars utilisateur.

    Cependant, à cause de nombreux pièges, je ne le recommande pas, surtout pas en utilisant php & mysql. MySQL ne prend pas en charge le streaming, donc en cas d'un grand fichier, vous allez utiliser tout votre bélier.

    Le système de fichiers est sans aucun doute le moyen le plus rapide et le plus naturel. Il a le moins de frais généraux et est le moins affamé de ressources.

    lire:

    stocker un fichier dans un base de données par opposition au système de fichiers?

    stocker des documents comme Blobs dans une base de données - Toute désavantages?


0 commentaires

0
votes

Vous pouvez les stocker dans dB puis manipuler facilement l'image. Par exemple, vous pouvez prendre l'image d'origine à partir de DB et créer plusieurs images de cache (sur disque) avec différentes tailles (en utilisant Imagick) et les montrer sur le site Web. Si vous utilisez DB, vous devez utiliser une chargement paresseuse lors de la prise d'images (charge le contenu de la charge que si vous en avez besoin), sinon MySQL plantera votre serveur. :)

Vous pouvez faire un dir /cache/pictures/ArdiD_$Width_$Height.jpg et les stocker là-bas. Et créer une nouvelle image uniquement si $ id_d warth_ warth_ $ hauteur introuvable.


0 commentaires

8
votes

Ce n'est certainement pas la voie à suivre. Vous devrez alors garder le blob dans la mémoire dans PHP avant de l'envoyer au navigateur.

Une meilleure approche serait de stocker les images comme fichiers du système de fichiers et de stocker simplement le nom de fichier dans votre base de données. De cette façon, vous pouvez décharger l'ensemble de l'image servant sur le serveur Web et ne jamais impliquer PHP dans les demandes HTTP pour le fichier.


0 commentaires

0
votes

I, personnellement, je ne recommanderais pas de stocker les fichiers dans la base de données elle-même. Je stockerais des références aux emplacements des fichiers afin qu'il puisse être mis à l'échelle à l'avenir si nécessaire via des miroirs, etc.


0 commentaires