private static function is_Image(string $filename): string
{
if (!defined('ALLOWED_MIME_TYPE')) {
define('ALLOWED_MIME_TYPE', [
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml'
]);
}
list($width, $height) = getimagesize($filename); // Getting image size
$imgInfo = new finfo(FILEINFO_MIME_TYPE);
$imgMime = $imgInfo->buffer(file_get_contents($filename));
// Checking image type
if (array_search($imgMime, ALLOWED_MIME_TYPE)) {
// ...
} else {
self::userError("'logo_url': invalid image format. given - {$imgMime}");
}
return $filename;
}
сохранить в файл (пока задумка реализовать через tmpfile())
А то получается что у вас любой файл после получения о нем информации удаляется с сервера.
я когда-то задавался подобным вопросом и ради этого заглянул в исходники
кстати, если вам нужны только размеры, и файлы могут быть большими, лучше пользовать не getimagesize(), а что–то вроде https://github.com/tommoor/fastimage
getimagesize()
для неё не подойдет. getimagesize()
, откуда можно выдернуть эти данные? let allNotChecked = true;
for (let i = 0; i < buttonsOperations.length; i++) {
elementEnable(firstArgument, 'input', btnResult);
elementEnable(secondArgument, 'input', btnResult);
elementEnable(buttonsOperations[i], 'input', btnResult);
if (buttonsOperations[i].checked === true) {
allNotChecked = false;
let operator = buttonsOperations[i].getAttribute('data-operation');
calculatorOperator(operator);
elementDisable(btnResult);
}
if (allNotChecked === true) {
output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
}
}
for (let i = 0; i < buttonsOperations.length; i++) {
elementEnable(firstArgument, 'input', btnResult);
elementEnable(secondArgument, 'input', btnResult);
elementEnable(buttonsOperations[i], 'input', btnResult);
let allNotChecked = true;
if (buttonsOperations.checked === true) {
if (allNotChecked) {
allNotChecked = false;
let operator = buttonsOperations[i].getAttribute('data-operation');
calculatorOperator(operator);
elementDisable(btnResult);
}
} else {
output.innerHTML = '<strong>Ошибка!</strong> Арифметическая операция не выбрана.';
}
}
сократить начало, ресурс можно получать независимо от расширения файла
session_start();
, а перед редиректом переменные, которые указывались в качестве пути у изображений переместить в $_SESSION['save_origin'] = $new_name_original;
$_SESSION['save_processed'] = $new_name_processed;
count($_POST) > 0 && isset($_POST['received_image'])
, то флаг $image_correct меняет значение на true и создается два изображения (оригинальное загруженное и отзеркаленное.header('Location: /public_html/task3_updated.php');
) я расположил в конце условия, после отчисти памяти "imagedestroy". И когда меня редиректит на эту же страницу - блок с изображениями не показывается.
Но в любом случае для значения заголовка Etga получить хэш. Наверное в любом случае нужно будет производить (сравнение с файлом и пришедшим урл). И ещё интересный вопрос, как полученный хэш записать в значение заголовок ETag при ответе...на php ничего сложного:
Но тут люмен, с которым я познакомился менее недели назад :). Поэтому уже рассматриваю вариант вручную реализовать Etag в моей задачи, так как информации найти не могу :(