2010-06-06 6 views
0

Tout d'abord, ce n'est pas une autre question sur le stockage d'images sur un système de fichiers DB par rapport à un autre. Je stocke déjà les images sur le système de fichiers. J'ai juste du mal à trouver une meilleure façon de les montrer à tous mes utilisateurs.Meilleure façon de stocker et de livrer des fichiers sur un CMS

J'utilise actuellement ce système. Je produis un nom de fichier aléatoire à l'aide md5 (uniqueid()), le problème que je suis face, est que l'image est alors présenté avec un lien comme celui-ci:

<img src="/_Media/0027a0af636c57b75472b224d432c09c.jpg" /> 

Comme vous pouvez le voir est pas La plus belle façon d'afficher une image (ou un fichier), et le nom ne dit rien sur l'image.

Je travaille avec un système CMS au travail, qui stocke tous les fichiers téléchargés sur une seule table, pour accéder à cette image, il utilise quelque chose comme ceci:

<img src="../getattachment/94173104-e03c-499b-b41c-b25ae05a8ee1/Menu-1/Escritorios.aspx?width=175&height=175" /> 

Comme vous pouvez le voir le chemin d'accès l'image, a maintenant une signification par rapport à l'autre, le problème est que cette mise est une grande contrainte dans le DB, par exemple, dans le dernier site que j'ai fait, j'ai une zone qui a environ 60 images, pour montrer le 60 images, je devrais faire au moins 60 requêtes individuelles à la base de données, en plus de l'autre requête pour récupérer les différents contenus sur la page.

Je pense que vous comprenez mon dilemme, est-ce que quelqu'un est allé à travers ce problème, qui peut me donner quelques indications sur la façon de résoudre ce problème?

Merci ..

+0

Pourquoi avez-vous exactement besoin d'utiliser une requête unique à la base de données pour récupérer 60 enregistrements? – thetaiko

+0

En fait, ce serait le meilleur moyen de récupérer les 60 enregistrements, je veux dire si j'utilise. Htaccess et un fichier php, je dois faire 60 requêtes pour récupérer chaque image. Ce qui n'est pas une bonne option .. – Tio

Répondre

0

Vous pouvez toujours utiliser .htaccess pour réécrire l'URL et la bande le nom convivial. Donc, en prenant votre exemple, vous pouvez afficher la source d'image comme quelque chose comme:

/Media/0027a0af636c57b75472b224d432c09c/MyPictures/Venice.jpg 

Vous pouvez utiliser htaccess pour demander réellement:

/Media/0027a0af636c57b75472b224d432c09c.jpg 

L'autre option est d'avoir un nom tout à fait amical:

Et le rediriger vers un fichier PHP qui examine l'URL et génère le hachage afin qu'il connaisse alors le nom du fichier image réel sur le serveur. Le script php devrait alors définir le type de contenu, lire l'image et l'éditer. L'inconvénient majeur de cette méthode est que vous pouvez vous retrouver avec des collisions que vous deux images peuvent avoir le même hachage. Étant donné que la même chose peut également se produire avec votre méthode actuelle, je suppose que ce n'est pas un problème.

+0

Le code exact que j'utilise pour générer le nom de fichier est md5 (uniqid (rand(), true)), je pense qu'il est difficile d'avoir le même hash. Même avec quelques collisions qui se produisent dans MD5 .. Et merci .. c'est l'un des moyens que je pense faire, la chose qui ne me semble pas juste est le nombre de requêtes que je dois faire .. – Tio

+0

Gardez à l'esprit que chaque appel d'image est une autre connexion au serveur. Si vous avez 10 images, vous aurez 60 processus PHP en cours d'exécution sur le serveur. Vous allez manquer de mémoire sans supporter trop d'utilisateurs simultanés. –

+0

Brent, merci pour la tête en haut .. ce n'est certainement pas le chemin à parcourir .. Je vais utiliser la première option Yacoby a montré, juste faire une simple réécriture sur l'URL, sans aucune page PHP impliqué .. merci. . – Tio

Questions connexes