Я продолжаю получать сообщение «Неподдерживаемый тип изображения. Драйвер GD может декодировать только файлы JPG, PNG, GIF или W EBP» при загрузке изображений на мой сайт. - PullRequest
0 голосов
/ 20 января 2020

По сути, у меня есть функция, которая удаляет изображения с диска Google и загружает их на мой сервер. Тем не менее, я получаю сообщение об ошибке «Неподдерживаемый тип изображения. Драйвер GD может декодировать только файлы JPG, PNG, GIF или W ebP». наугад Я что-то здесь не так делаю? Ниже приведен код:

public function addPhoto($pictureGoogleDriveUrl, $productImport) {

        //delete tmp pic

        $image_path = \Config::get('constants.ROOT_PATH') . '/public/product_uploads/tmp';
        if(File::exists($image_path)) {
            File::delete($image_path);
        }

        $fileId = str_replace("https://drive.google.com/open?id=", "", trim($pictureGoogleDriveUrl));
        $fileId = str_replace("/view?usp=sharing", "", trim($fileId));
        $fileId = str_replace("/view", "", trim($fileId));
        $fileId = str_replace("https://drive.google.com/file/d/", "", trim($fileId));

        $ch = curl_init("https://docs.google.com/uc?id=" . $fileId);
        $fp = fopen(\Config::get('constants.ROOT_PATH') . '/public/product_uploads/tmp/product_photo.jpeg', 'wb');

        curl_setopt($ch, CURLOPT_FILE, $fp);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_exec($ch);

        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        curl_close($ch);
        fclose($fp);

        if ($httpCode != 404) {
            $photo = new UploadedFile(\Config::get('constants.ROOT_PATH') . '/public/product_uploads/tmp/product_photo.jpeg', 'product_photo.jpeg', 'image/jpeg', null, null, true);

            $img = Image::make(\Config::get('constants.ROOT_PATH') . '/public/product_uploads/tmp/product_photo.jpeg');
            $img->fit(400);
            $img->save(\Config::get('constants.ROOT_PATH') . '/public/product_uploads/tmp/product_photo.jpeg');

            (new \App\AddPhotoToProduct($productImport, $photo))->saveInConsole();
        }
        sleep(5);
    }

Обратите внимание, что: 1) загружается около 30 изображений одновременно. 2) Ошибка случайная, может произойти сбой при первой загрузке, иногда второй, иногда последней.

...