Как стать автором
Обновить

Ресайз картинок из веба или борьба с вредными пользователями…

Время на прочтение2 мин
Количество просмотров1.4K
Нужен совет по реализации.

Дано: Drupal, Bueditor, материал (который добавляют зарегистрированные пользователи).

Каждый пользователь, что бы его материал лучше смотрелся хочет добавить в пост картинку, но возможности загрузки на сайт изображений нет, есть вариант только размещения иллюстраций, которые находятся в сети. Соответственно пользователь просто кидает урл, который прописывается автоматом тегу IMG. Всё бы ничего, но пользователь может найти файл разрешением 2500х2500px и легко его вставить, тем самым, в прямом смысле слова разорвать сайт на части.


Задача: не дать пользователю разорвать сайт.

Решение:
Конструкция размещения изображений в материале следующая:

«div class="content"» «img src="LINK"» «/div»

в стилях просто прописал:

div.content img {max-width:500px;}

учитывая, что 6 ИЕ и его предки этого не поймут в отдельный css,
который подгружается исключительно для ИЕ вставил:

div.content img { width: expression(this.offsetWidth < 500 ? "auto" : 500); }

В итоге если пользователь вставил изображение большее по ширине чем 500px, оно ресайзится средствами браузера, если меньше 500 то отображается как есть…
Я правильно сделал или есть более удобное и грамотное решение данной задачи?

Спасибо…

АПдейт
Повторюсь загрузка на сервер и пост обработка изображения на нем не подходит, в реализации этого не вижу ничего сложного.

К слову на хабре никакой защиты от дурака с желанием вставить изображение 2500х2500px тоже не наблюдается, ну если только механизм саморегулирования.

Да, приведенное выше решение имеет кучу минусов как то: картинка ресайзится браузером криво, пользователь грузит весь файл целиком хоть он и по видимой ширине 500pх и тд.

Но… все эти минусы так же присутствуют если данный код не предусмотреть + к ним прибавляется разрыв сайта.

Вот как то так…
Теги:
Хабы:
+13
Комментарии80

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн