@gowtham rajan является правильным, основываясь на этом ответе , вы можете использовать простой встроенный плагин для выполнения работы:
{
beforeInit: function(chart, options) {
chart.legend.afterFit = function() {
this.height += 100; // must use `function` and not => because of `this`
};
}
}
См. Этот stackblitz пример
Вы могли использовать запрос ГОЛОВЫ HTTP и проверить тип контента. Это могло бы быть хорошим компромиссом. Это может быть сделано с помощью Потоков PHP. Фарлонг Wez имеет статью, которая показывает, как использовать этот подход для отправления запросов сообщения, но это может быть легко адаптировано для отправления ГЛАВНЫХ запросов вместо этого. Можно получить заголовки от http ответа с помощью stream_get_meta_data ().
Конечно, это не действительно 100%. Некоторые серверы отправляют неправильные заголовки. Это однако обработает случаи, куда изображения поставляются через сценарий, и корректное расширение файла не доступно. Единственный способ быть действительно бесспорным состоит в том, чтобы на самом деле получить изображение - или все это или первые несколько байтов, как предложено thomasrutter.
Существует несколько разных подходов.
Осуществите сниффинг содержания путем поиска магического числа в начале файла. Например, GIF использует GIF87 или GIF89 как первые пять байтов файла (в ASCII). К сожалению, это не может сказать Вам, если существует ошибка в изображении или если изображение содержит злонамеренное содержание. Вот некоторые магические числа для различных типов файлов изображений (не стесняйтесь использовать их):
"\xff\xd8\xff" => 'image/jpeg', "\x89PNG\x0d\x0a\x1a\x0a" => 'image/png', "II*\x00" => 'image/tiff', "MM\x00*" => 'image/tiff', "\x00\x00\x01\x00" => 'image/ico', "\x00\x00\x02\x00" => 'image/ico', "GIF89a" => 'image/gif', "GIF87a" => 'image/gif', "BM" => 'image/bmp',
Сниффинг содержания как это, вероятно, собирается соответствовать Вашим требованиям лучше всего; необходимо будет только читать и поэтому загрузить первые несколько байтов файла (мимо заголовка).
Загрузите изображение, пользующееся библиотекой GD, чтобы видеть, загружается ли это без ошибки. Это может сказать Вам, если изображение действительно без ошибки или нет. К сожалению, это, вероятно, не соответствует Вашим требованиям, потому что это требует загрузки полного образа.
К сожалению, для файла возможно быть оба действительным изображением, а также zip-файлом, содержащим вредное содержание, которое могло быть выполнено, поскольку Java вредным сайтом - видит использование GIFAR. Можно почти наверняка предотвратить эту уязвимость путем загрузки изображения в библиотеке как GD и выполнения некоторого нетривиального фильтра на нем, как смягчение или увеличение резкости его крошечная сумма (т.е. использование фильтра свертки) и сохранение его в новый файл, не передавая метаданных через.
Попытка определить, является ли что-то изображением одним только его типом контента, довольно ненадежна, почти так же ненадежна как проверка расширения файла. При загрузке изображения с помощью <img элемент, браузеры осуществляют сниффинг для волшебной строки.