Сохраните файлы в базе данных с платформой объекта

У меня есть решение MVC ASP.NET, основывался на Платформе Объекта с Microsoft SQL Server 2008. Я должен создать функцию, которая позволяет моим пользователям загрузить файлы.

То, что я хотел бы:

  • Решение, которое использует Платформу Объекта, чтобы хранить файлы в Базе данных
  • Решение, которое обнаруживает и препятствует загрузить тот же файл дважды через некоторый хеш/контрольную сумму
  • Подсказки относительно дизайна базы данных/таблицы
17
задан George Stocker 18 February 2010 в 14:48
поделиться

3 ответа

«Правильный» способ сохранить файл в базе данных SQL Server 2008 - это использовать тип данных FILESTREAM . Я не знаю, поддерживает ли Entity Framework это, но вы, безусловно, можете попробовать и посмотреть, что произойдет.

Тем не менее, большую часть времени, когда люди делают это, они не хранят файл в базе данных. Это означает, что вам нужно пройти через ASP.NET и сервер базы данных только для обслуживания файла, который вы могли бы обслуживать непосредственно с веб-сервера. Это также может несколько усложнить резервную копию вашей базы данных и сайта. Поэтому, когда мы загружаем файлы в нашу MVC / Entity Framework, мы сохраняем только ссылку на расположение файла в базе данных и сохраняем сам файл в другом месте.

Очевидно, какая стратегия вам подходит, во многом зависит от особенностей вашего приложения.

10
ответ дан 30 November 2019 в 10:19
поделиться

В вашей модели сущности сопоставьте колонку базы данных BLOB со свойством byte[]. Присвойте содержимое загруженного файла этому свойству объекта сущности и сохраните изменения в ObjectContext.

Для вычисления хэша можно использовать MD5CryptoServiceProvider class

44
ответ дан 30 November 2019 в 10:19
поделиться

Вот как я это делаю для подкастов:


ID     Title         Path                    Summary              UploadDate
---    -----        --------              ----------------        -----------
1     TestPodcast   /Podcasts/ep1.mp3      A test podcast         2010-02-12

Путь хранит ссылку на физическое местоположение подкаста. Я использовал сообщение Скотта Хансельмана на Загрузка файлов с помощью ASP.NET MVC , чтобы разобраться с частью загрузки файлов.

5
ответ дан 30 November 2019 в 10:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: