Enregistrer les fichiers dans la base de données avec le cadre d'entité
J'ai un ASP.NET MVC solution construite sur Entity Framework avec Microsoft SQL Server 2008. J'ai besoin de créer une fonction qui permet aux utilisateurs de télécharger des fichiers.
Ce que je voudrais, c'est:
- Une solution qui utilise Entity Framework pour stocker des fichiers dans la Base de données
- Une solution qui détecte et empêche de télécharger deux fois le même fichier via une sorte de hash/checksum
- Des conseils sur la base de données/tableau design
source d'informationauteur Freddy
Vous devez vous connecter pour publier un commentaire.
La "bonne" façon de stocker un fichier dans une base de données SQL Server 2008 est de utilisez le type de données FILESTREAM. Je ne suis pas au courant que l'Entity Framework prend en charge, mais vous pouvez certainement essayer et voir ce qui se passe.
Cela dit, la plupart du temps, quand les gens font cela, ils n'ont pas stocker le fichier dans la base de données. Cela signifie que vous devez passer par ASP.NET et le serveur de base de données juste pour servir un fichier dont vous pourriez vous servir directement à partir du serveur web. Il peut également un peu compliquer l'image de sauvegarde de votre base de données et du site. Donc, quand on télécharger des fichiers à notre MVC/Entity Framework, nous ne disposons que d'une référence à l'emplacement du fichier dans la base de données, le fichier et le stocker ailleurs.
De toute évidence, la stratégie qui est bon pour vous dépend beaucoup sur les détails de votre demande.
Dans votre modèle d'entité, carte de la GOUTTE colonne de base de données à un
byte[]
de la propriété. Copier le contenu du fichier téléchargé pour que la propriété de l'entité de l'objet, et d'enregistrer les modifications dans leObjectContext
.Pour calculer une valeur de hachage, vous pouvez utiliser le
MD5CryptoServiceProvider
classeVoici comment je le fais pour les Podcasts:
La
path
stocke une référence à l'emplacement physique du Podcast. J'ai utilisé un post de Scott, Hanselman sur Les Uploads de fichier avec ASP.NET MVC à traiter le dossier de téléchargement de la partie.Un exemple de travail (uniquement pour le fichier de téléchargement, parce que ce celui qui arrive en premier dans google), sur la base de @Thomas réponse :