2011-08-26 5 views
0

J'ai besoin d'un conseil pour créer un site où les utilisateurs peuvent ajouter des photos aux produits qu'ils annoncent. Mon problème est que je ne sais pas comment et où stocker les photos pour chaque utilisateur, et comment créer l'accès pour eux (les photos). Quels sont les moyens les plus couramment utilisés pour résoudre ce problème?Travailler avec des photos et une base de données

Comment puis-je créer un dossier pour chaque photos d'utilisateurs en utilisant php ou javascript ou jquery, si c'est une bonne idée?

+1

Puisque vous demandez "en utilisant php ou javascript ou jquery", je pense que vous êtes un peu au-dessus de votre tête. –

+0

Il existe plusieurs façons communes. Stocker dans la base de données est un. Stocker sur le disque en est une autre. Eh bien, c'est ça, en fait. :-) Mais je suis d'accord avec Diodeus, si vous pensez que JQuery a quelque chose à voir avec le stockage réel des images, vous devriez prendre du recul. – GolezTrol

Répondre

1

Si c'est plus facile, vous pouvez enregistrer vos photos sur le disque, par ex. dossier images/produits

Enregistrer vos informations d'image dans db [ImageID, IMAGESIZE, Imagetype]

Enregistrer l'image sur le disque comme par exemple user_id_image_id_product_id.jpg

954_231_312.jpg

Il n'y aura des doublons.

Lorsque l'image enregistrée puis mettez à jour votre dossier en db pour mettre un nom en elle, plus facile d'obtenir une image liée au produit

update tbl_images set name = 'user_id_image_id_product_id.jpg' where image_id='image_id' 

Ou si votre serveur est assez fort, vous pouvez les enregistrer dans la base de données. L'enregistrement dans la base de données facilite un processus, et c'est la sauvegarde, il suffit de sauvegarder le dossier db image, mais le système de fichiers est plus rapide.

0

Vous pouvez commencer en créant un dossier de référentiel - l'endroit où vous conserverez vos photos téléchargées par l'utilisateur et d'autres fichiers.
Lorsque l'utilisateur télécharge quelque chose, vous placez le fichier dans ce référentiel quelque part en fonction du référentiel tree (comment vous gérez chaque fichier utilisateur). Vous pouvez créer un dossier avec l'identifiant de l'utilisateur s'il n'en a pas déjà dans le référentiel et y placer les fichiers.

Une fois placé, vous devez conserver le nom de fichier du fichier téléchargé dans la base de données pour votre utilisateur. Et puis, lorsque vous avez besoin de supprimer le fichier ou le trouver, il suffit de rechercher le nom de fichier pour l'utilisateur.

0

Je suis d'accord avec @Senad Meškin sur tout, sauf le stockage des photos dans la base de données. Bien que ce soit une bonne idée, la base de données deviendra rapidement grande.

également chaque fois que vous servez une image de la base de données, vous devez utiliser php ou une autre langue pour extraire le fichier de la base de données et le livrer à l'utilisateur, générer la base de données. Ceci permet d'utiliser la mémoire de votre serveur assez rapidement si vous extrayez beaucoup de gros fichiers de la base de données et que vous les gardez en mémoire pendant que vous les renvoyez à l'utilisateur final. Si vous stockez les images dans un dossier et qu'elles sont publiques, vous pouvez simplement spécifier l'URL et n'importe qui peut la voir directement depuis html, sans avoir besoin de traiter php. Si vous avez besoin de contrôler l'accès aux images, vous pouvez d'abord valider leur identité puis utiliser des fonctions dans php comme passthru, pour renvoyer le fichier avec un minimum de temps de traitement. Il y a aussi des modules apache supplémentaires que vous pouvez installer comme sendfile, ce qui accélérera aussi

Questions connexes