Загрузить изображение iphone без расширения (PHP) - PullRequest
0 голосов
/ 21 февраля 2019

В моем php-коде я обрабатываю изображение, загруженное из другого источника: с рабочего стола, с мобильного и т. Д. Обычно изображения приходят в формате PNG или JPG, но я заметил, что снимки, сделанные с IOS / Iphone (возможно, и с Android), приходят безрасширение и как «изображение» только.Я попытался обработать картинку после загрузки на сервер (с помощью exif_imagetype и getExtension (), чтобы проверить, является ли файл изображением и является ли он расширением, чтобы иметь возможность добавить его в случае отсутствия в соответствии с его обнаруженным типом. Но яне удается сделать, так как мой сценарий принимает только PNG или JPG. Какой самый эффективный и простой способ решить эту проблему?

Вот мой код:

if(!empty($_FILES['file']['name'])){
    $uploadedFile = '';
    if(!empty($_FILES["file"]["type"]))
    {
        $valid_extensions = array("jpeg", "jpg", "png");
        $temporary = explode(".", $_FILES["file"]["name"]);
        $file_extension = end($temporary);
        if((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") ||
         ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $valid_extensions))
        {
            $filetype=$_FILES["file"]["type"];
            $sourcePath = $_FILES['file']['tmp_name'];
            $targetPath = "upload/".$fileName;
            $temp = explode(".", $_FILES["file"]["name"]);      
            $newfilename = 'code' . '.' . end($temp);           
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);

        }
    }

1 Ответ

0 голосов
/ 21 февраля 2019

Некоторые изображения на устройствах IOS являются heic [https://en.wikipedia.org/wiki/High_Efficiency_Image_File_Format], это образы жизни.

Таким образом, вы загружаете что-то, и когда вы проверяете расширение и mime-тип, сценарий пропускается и заканчивается до конца. Если вы добавите инструкцию else, вы сможете сообщить пользователю и знать, что файл, который он отправляет, не являетсясовместимый.

if((($_FILES["file"]["type"] == "image/png") || ($_FILES["file"]["type"] == "image/jpg") ||
         ($_FILES["file"]["type"] == "image/jpeg")) && in_array($file_extension, $valid_extensions))
        {
            $filetype=$_FILES["file"]["type"];
            $sourcePath = $_FILES['file']['tmp_name'];
            $targetPath = "upload/".$fileName;
            $temp = explode(".", $_FILES["file"]["name"]);      
            $newfilename = 'code' . '.' . end($temp);           
            move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $newfilename);

        }else{
            print "Invalid File Format :" . $_FILES["file"]["type"];

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