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

Поэтому я запускаю веб-игру на http://ninjawars.net/

Отображение внешних размещенных изображений

Я хочу предоставить встраиваемые изображения, которые не являются аватарами (я знаю и уже пользуюсь великолепным сервисом gravatar, но эти изображения не будут привязаны ни к одному письму), это потому, что я нашел хостинг, загруженный вами самостоятельно. Изображения часто бывают болезненными, а другие люди уже делают это лучше, так сказать.

Предотвращение перегибов для внешних размеров файлов

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

Один из способов: ограничение URL

Поэтому я ожидаю, что нужно будет несколько ограничить параметры URL-адреса после того, как они введены пользователем, ограничивая параметры некоторыми службами размещения изображений. Моя первоначальная мысль с этим заключается в том, чтобы потребовать фиксированные разделы URL, форма, которая отображает:

[ http://flickr.com/photos/] [добавьте сюда остальную часть URL вашей фотографии] [/sizes/sq/]

Таким образом, оно будет ограничено размещением изображения на flickr и определенным URL-адресом, который предположительно устанавливает размер на flickr, возможно, с некоторой внутренней обработкой PHP, которая удалит любые дублирующиеся экземпляры первой и последней частей URL, так что что люди могут просто опубликовать полный URL и заставить его работать.

Лучшие альтернативы?

Итак, вопрос в том, является ли это глупым способом сделать это? Есть ли лучшие решения для JavaScript или PHP уже там? Как я должен размещать внешние изображения, все еще проявляя некоторое подобие контроля? Или это количество контроля параноидально и не действительно необходимо?

2 ответа

Решение

Используйте HTTP-запрос "HEAD", чтобы получить размер файла без его загрузки. поле ответа "Content-Length". Проверка его в php или в js(ajax)... Я бы предпочел js, потому что он снимает нагрузку с сервера на клиенты. Кроме того, согласно HTTP 1.1, больше не должно использоваться соединение с одним пользовательским агентом. И многие пользователи вашего сервера могут привести к множеству одновременных подключений с вашего сервера к серверу хостинга изображений.

Большинство людей не имеют абсолютно никаких сведений о размере файла, поэтому я думаю, что не стоит беспокоиться о больших изображениях: они попытаются использовать изображения 4 Гб в качестве аватаров.

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

Вы можете получить изображение самостоятельно, изменить его размер, сохранить результат и обработать его, но это примерно так же, как загрузка...

Да, размещение загруженных изображений является болезненным, но, похоже, лучшим решением.

Вы должны остерегаться некоторых вещей:

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

требует некоторой работы, но это лучший способ иметь некоторый контроль...

И не забывайте о проблемах с оскорбительными и / или защищенными авторским правом изображениями, с которыми вы будете справляться независимо от вашего технического решения)

Другие вопросы по тегам