Le meilleur moyen de stocker de l'utilisateur des fichiers téléchargés dans une webapp
Je suis en création d'une application web (dans Django), qui doit permettre aux utilisateurs de télécharger des fichiers (en particulier images, qui sont ensuite affichés pour les autres utilisateurs). Je suis en train d'essayer de comprendre la meilleure façon de stocker ces fichiers téléchargés.
De questions, j'ai vu certaines personnes ont suggéré de donner au fichier un générée par le serveur unqiue id, puis la création d'une table DB cartes id noms des fichiers d'origine.
Est-ce la meilleure approche pour le stockage de l'utilisateur, les fichiers téléchargés, de la sécurité, de l'efficacité ou de tout autre point de vue? Quel genre de renseignements dois-je stocker sur chaque fichier?
Il d'autres meilleures pratiques liées à l'acceptation par l'utilisateur des fichiers téléchargés? (Autres que de s'assurer qu'ils sont vraiment des images et le contrôle de leur taille, évidemment)?
Modifier: Un peu plus d'infos à propos de ce dont j'ai besoin. Je parle précisément de l'image des fichiers que les utilisateurs ont besoin de télécharger et intégrer dans le contenu qu'ils créent. Les imaginer comme un StackOverflow une réponse (ou un blog): quelqu'un télécharge une image, qui doit être mémorisée et affichée à chaque fois que quelqu'un d'autre voit la réponse.
Merci,
Edan
Remarque: Il y a plusieurs questions, mais je n'ai pas trouvé un qui demande une comparaison des moyens de stocker de l'utilisateur des fichiers téléchargés.
- salut edan, je suis venu pour le même problème. Je vais créer une application où les utilisateurs peuvent télécharger des images ou des pdf. Ensuite ils peuvent consulter/télécharger des fichiers. Je pense au système de fichiers de stockage. Je veux juste savoir de quelle manière avez-vous préféré de votre expérience?
- La direction que je suis la planification en cours est la suivante: 1. Une base de données de tenir "méta" info (nom de fichier d'origine, etc.). 2. Physique des fichiers sur le système de fichiers, avec un nom qui est l'index dans la base de la méta-informations. Il peut y avoir plus d'un fichier physique pour chaque db entrée, par la manière, correspondant à différentes résolutions, par exemple. E. g., Je vais avoir des fichiers: 254_high_res.jpg, 254_los_res.jpg où 254 est l'index dans la base de données de la méta-informations pour le fichier 254.
- grâce edan. je vais stocker des images avec le radon guid noms générés comme nom de fichier. et pour une résolution différente, je vais utiliser un gestionnaire. dotnetslackers.com/articles/aspnet/...
Vous devez vous connecter pour publier un commentaire.
Votre question est trop vaste pour être vraiment utile; meilleure approche dépendra de vos besoins spécifiques. Néanmoins...
Programmeurs sont constamment tentés de le pinard des fichiers dans la base de données. Résister. Il ajoute une couche de complexité à tout ce que vous essayez de faire avec eux par la suite.
Pour mon expérience, tout en utilisant un hashkey que le nom local a ma préférence, il n'a pas vraiment fonctionner parce que nos dossiers n'étaient pas limités aux images: les non-images besoin d'un nom de fichier pour servir de retour d'utilisateurs, et les téléchargeurs n'aime pas particulièrement avoir leurs fichiers radicalement renommée depuis elle rend impossible pour eux de savoir quel fichier est quoi.
Comme pour les images il y a quelques non-trivial de travail à faire pour changer la taille de différentes tailles/vignettes.
C'est une grande question.
Liés à votre photo de cas d'utilisation c'est le domaine d'une image-serveur qui est habituellement une complète séparation d'une partie de la demande. Ils gèrent le cycle de vie et le redimensionnement des images (une image est stockée/redimensionné à différentes tailles). Comme ce que j'ai vu n'a jamais été mis en œuvre par une colonne BLOB à partir de SQL, mais par simple normale fichier sur le disque.
Également jeter un oeil à un (les infrastructures exemple de facebook)
Règle générale, le produit doit aligner à vos besoins concrets (taille de fichier, le nombre de fichiers, de la charge). Dans la plupart des cas, vous ne voulez vraiment pas à construire tout ça à partir de zéro... Mais si vos besoins sont plus faibles à la fin (juste un peu d'utilisateurs le téléchargement de fichiers rarement), vous pouvez simplement enregistrer ces fichiers sur le disque dur et économiser le chemin d'accès comme référence dans vos autres données (par exemple colonne de SGBDR).