По сути, у меня есть функция, которая удаляет изображения с диска 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) Ошибка случайная, может произойти сбой при первой загрузке, иногда второй, иногда последней.