2010-09-27 4 views
2

в моем новом сайте C# .net 3.5 ASP, пользователь имеет возможность загрузить изображение.Как сохранить загруженные фотографии в базе данных?

Какое решение лучше всего подходит для сохранения этого изображения? Должен ли я сохранить его на своем сервере в папке и сохранить путь в базе данных или сохранить изображение в базе данных?

+0

ASP или ASP.NET? – abatishchev

+1

Возможный дубликат [Где я должен хранить фотографии? Файловая система или база данных?] (Http://stackoverflow.com/questions/1546485/where-should-i-store-photos-file-system-or-the-database) или http://stackoverflow.com/ Вопросы/1105429/storageing-uploaded-photos-and-documents-filesystem-vs-database-blob – Oded

ответ

2

Pro файлы:

  1. Существует простой вызов, чтобы служить файл в поток ответа. Просто установите ContentType соответствующим образом, позвоните, и все готово.
  2. Его более совершенный (хотя это часто завышено, хорошее использование blobs или SQLServer filestreams имеет тенденцию быть довольно успешным, но все равно проигрывает по сравнению с файловыми операциями).

Pro DB:

  1. Консистенция легче, вы не можете иметь ситуацию, когда структура файла и несоответствие базы данных.
  2. Решения на основе файлов сложны, если вы перейдете к решению веб-фермы с более чем одним веб-сервером (выше определенного успеха вам придется это делать).
  3. Перенос данных из-за изменений, как правило, проще. Вам все равно придется перемещать данные БД, поэтому, как только вы решите, что вы тоже решили это сделать для изображений.
  4. Код манипуляции легче писать.
  5. Отчеты по всей коллекции изображений проще.
0

Должен ли я сохранить его на моем сервере в папку и сохранить путь в базе данных

Вы могли бы сделать что-то подобное или ...

вы можете воспользоваться FILESTREAM в SQL Server 2008.

Файлы будут храниться на диске, но прозрачно управляться так, как если бы они были непосредственно в поле базы данных. Уменьшает нагрузку на базу данных и ограничивает рост базы данных, особенно если вы используете потоки NTFS для доступа к этим файлам.

An Introduction to SQL Server FileStream

0

Не рекомендуется хранить большие файлы/фотографии в БД, но вы можете. Для этого используйте столбец типа varbinary.

Начиная с SQL Server 2008 вы также можете сохранять BLOBs = файлы на диске, но все же сервер SQL ссылается на них с помощью filestream storage attribute. Вы можете проверить основы различий в производительности here.

+0

Я бы предпочел «образ» над «varbinary», если бы не знал изображения, где все будет очень мало. 'varbinary' ограничен с точки зрения максимального размера. –

+0

Я не думаю, что это правда. Jon - поля изображений устарели и полностью заменены varbinary, также см. Эту тему: http://stackoverflow.com/questions/47203/sql-server-nvarcharmax-or-ntext-image-or -varbinary – BrokenGlass

+0

Ах да. Мы оба правы, имидж за 2005 год по причинам, которые я сказал, varbinary (MAX) за 2008 год по причинам, которые вы сказали. Если только querant фактически не использует Postgres of Oracle или что-то в этом роде, в этом случае мы оба ошибаемся :) –

Смежные вопросы