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

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

$type = $this->data['Gallery']['type'];

if (!empty($this->data)) {
if (!isset($this->data['Gallery']['gallery_category_id'])) {
if ($this->data['Gallery']['type'] == 1) {
echo "<script>alert('" . INFOGALLERYSECTION . "')</script>";
} elseif ($this->data['Gallery']['type'] == 2) {
echo "<script>alert('" . INFOSHROTSECTION . "')</script>";
} else {
}
} else {
// set the upload destination folder
//$destination = realpath('../../app/webroot/img/gallery') . '/';

$bigimg = WWW_ROOT . 'img/gallery/big/';
$smallimg = WWW_ROOT . 'img/gallery/small/';

// grab the file
$file = $this->data['Gallery']['photofile'];
$imageTypes = array("image/gif", "image/jpeg", "image/png"); //List of accepted file extensions.
foreach ($iamgeTypes as $type) {                 //check if image type fits one of allowed types
if ($type == $this->data['type']) {
// upload the image using the upload component
$result = $this->Upload->upload($file, $bigimg, null, array('type' => 'resize', 'size' => '965', 'output' => 'jpg'));
$result = $this->Upload->upload($file, $smallimg, null, array('type' => 'resize', 'size' => '146', 'output' => 'jpg'));
}
}
}
}

1

Решение

Вам необходимо получить mime-тип загруженного файла. Есть два способа сделать это в зависимости от вашей версии PHP.

PHP 5.3> =, PECL fileinfo> = 0.1.0

$file = $this->data['Gallery']['photofile'];
$imageTypes = array("image/gif", "image/jpeg", "image/png"); //List of accepted file extensions.
// get file mime type
$fileInfo = finfo_open(FILEINFO_MIME_TYPE);
$fileType = finfo_file($fileInfo, $file);
finfo_close($fileInfo);

if (in_array($fileType, $imageTypes)) {
$result = $this->Upload->upload($file, $bigimg, null, array('type' => 'resize', 'size' => '965', 'output' => 'jpg'));
$result = $this->Upload->upload($file, $smallimg, null, array('type' => 'resize', 'size' => '146', 'output' => 'jpg'));
}

Больше о fileinfo функции, которые вы можете найти в документация.

PHP 5.3 <

// get file mime type
$fileType = mime_content_type($file);

Документация за mime_content_type() функция.

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

0

Другие решения

$file = $this->data["Gallery"]['photofile'];
if(!empty($file['tmp_name']))
{
$type = explode('/', $file['type']);
if($type[0] == 'image')
{
// Your Code
}
}
0

По вопросам рекламы [email protected]