У меня есть решение MVC ASP.NET, основывался на Платформе Объекта с Microsoft SQL Server 2008. Я должен создать функцию, которая позволяет моим пользователям загрузить файлы.
То, что я хотел бы:
«Правильный» способ сохранить файл в базе данных SQL Server 2008 - это использовать тип данных FILESTREAM . Я не знаю, поддерживает ли Entity Framework это, но вы, безусловно, можете попробовать и посмотреть, что произойдет.
Тем не менее, большую часть времени, когда люди делают это, они не хранят файл в базе данных. Это означает, что вам нужно пройти через ASP.NET и сервер базы данных только для обслуживания файла, который вы могли бы обслуживать непосредственно с веб-сервера. Это также может несколько усложнить резервную копию вашей базы данных и сайта. Поэтому, когда мы загружаем файлы в нашу MVC / Entity Framework, мы сохраняем только ссылку на расположение файла в базе данных и сохраняем сам файл в другом месте.
Очевидно, какая стратегия вам подходит, во многом зависит от особенностей вашего приложения.
В вашей модели сущности сопоставьте колонку базы данных BLOB со свойством byte[]
. Присвойте содержимое загруженного файла этому свойству объекта сущности и сохраните изменения в ObjectContext
.
Для вычисления хэша можно использовать MD5CryptoServiceProvider
class
Вот как я это делаю для подкастов:
ID Title Path Summary UploadDate --- ----- -------- ---------------- ----------- 1 TestPodcast /Podcasts/ep1.mp3 A test podcast 2010-02-12
Путь
хранит ссылку на физическое местоположение подкаста. Я использовал сообщение Скотта Хансельмана на Загрузка файлов с помощью ASP.NET MVC , чтобы разобраться с частью загрузки файлов.