как сохранить изображения на сервере (структура) - PullRequest
1 голос
/ 19 апреля 2011

Я программирую приложение с помощью mvc2.Пользователи должны иметь возможность загружать изображения в свой профиль.Лучший способ сохранить изображения - это сохранить их в базе данных, но я думаю, что это тоже самый дорогой.(Я использую MSSql) Я думал, что лучший способ будет сохранить их на сервере.Я думал о: пользователь загружает изображения, сервер изменяет их размер и сохраняет изображение на сервере и путь к изображению в базе данных.

Но что делать, если у меня больше нет возможностей на моем сервере?Я должен использовать второй или третий?

Мой вопрос: как лучше всего обрабатывать изображения на сервере?Какой лучший способ быть гибким?

Спасибо за ваши ответы !!!

1 Ответ

5 голосов
/ 19 апреля 2011

Есть ряд факторов, которые следует учитывать.

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

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

Когда дело доходит до этого, веб-серверы очень хорошо справляются с обслуживанием файлов. Если вы можете использовать это, вы должны.

Наконец, у вас есть проблемы с пространством. Во-первых, вы можете предотвратить загрузку изображений определенного размера. Вы также можете, как вы предлагаете, автоматически обрезать до выбранного размера.

Если проблема заключается в большом количестве пользователей, вы всегда можете хранить свои медиафайлы на отдельном сервере, сохраняя полную ссылку на каждый ресурс, например: -

<img src="http://images2.mydomain.com/image/profile_123.png" alt="A profile pic" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...