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

Итак, я запускаю веб-игру на http://ninjawars.net

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

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

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

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

В одну сторону: ограничение URL

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

[http://flickr.com/photos/] [укажите оставшуюся часть вашей фотографии здесь] [/ sizes / sq /]

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

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

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

Ответы [ 2 ]

1 голос
/ 21 января 2010

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

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

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

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

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

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

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

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

1 голос
/ 21 января 2010

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

...