Метод guardar позволяет загружать php-файл и изображения (jpg и png) после того, как вы измените его так, чтобы изображения автоматически менялись, с типом изображения jpg хорошо работает, но когда я пытаюсь загрузить png-файлы, это не работает. показать следующие ошибки:
Предупреждение: imagecreatefromjpeg (): gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке: в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecreatefromjpeg (): ‘view / hardware / imagenes / Mouse.php / conectores-usb.png’ не является допустимым файлом JPEG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 250
Предупреждение: imagecreatefrompng (): ‘view / hardware / imagenes / Mouse.php / conectores-usb.png’ не является допустимым файлом PNG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 258
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 288
Предупреждение: imagecreatefromjpeg (): gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке: в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecreatefromjpeg (): ‘view / hardware / imagenes / Mouse.php / Conector-pc.png’ не является допустимым файлом JPEG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 250
Предупреждение: imagecreatefrompng (): ‘view / hardware / imagenes / Mouse.php / Conector-pc.png’ не является допустимым файлом PNG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 258
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 288
Предупреждение: imagecreatefromjpeg (): gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке: в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecreatefromjpeg (): ‘view / hardware / imagenes / Mouse.php / Mouse-usb.png’ не является допустимым файлом JPEG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 250
Предупреждение: imagecreatefrompng (): ‘view / hardware / imagenes / Mouse.php / Mouse-usb.png’ не является допустимым файлом PNG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 258
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 288
Предупреждение: imagecreatefromjpeg (): gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке: в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecreatefromjpeg (): ‘view / hardware / imagenes / Mouse.php / Tipo-conector-mouse.png’ не является допустимым файлом JPEG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php на линии 220
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 250
Предупреждение: imagecreatefrompng (): ‘view / hardware / imagenes / Mouse.php / Tipo-conector-mouse.png’ не является допустимым файлом PNG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php на линии 258
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 288
Предупреждение: imagecreatefromjpeg (): gd-jpeg: библиотека JPEG сообщает о неисправимой ошибке: в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecreatefromjpeg (): ‘view / hardware / imagenes / Mouse.php / Tipos.png’ не является допустимым файлом JPEG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 220
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 250
Предупреждение: imagecreatefrompng (): ‘view / hardware / imagenes / Mouse.php / Tipos.png’ не является допустимым файлом PNG в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 258
Предупреждение: imagecopyresampled () ожидает, что параметр 2 будет ресурсным, логическое значение указано в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php в строке 288
Предупреждение: Невозможно изменить информацию заголовка — заголовки уже отправлены (выходные данные начинаются с C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller.php: 288) в C: \ xampp \ htdocs \ bconocimiento \ controller \ solucion.controller. PHP на линии 299
public function Guardar()
{
$solucion = new solucion();
$tamaño = $_FILES['Pagina']['size'];
$tipo = $_FILES['Pagina']['type'];
$ruta = "";
if ($_REQUEST['Tipo'] == "software")
{
$ruta = "view/software/";
}
if ($_REQUEST['Tipo'] == "hardware")
{
$ruta = "view/hardware/";
}
if ($_REQUEST['Tipo'] == "red")
{
$ruta = "view/red/";
}
opendir($ruta);
$archivo_name = $_FILES['Pagina']['name'];
$extension = explode(".", $archivo_name);
$num = count($extension) - 1;
if ($extension[$num] == "php" || $extension[$num] == "html")
{
$destino = $ruta . $_FILES['Pagina']['name'];
copy($_FILES['Pagina']['tmp_name'], $destino);
$solucion->id = $_REQUEST['id'];
$solucion->Nombre = $_REQUEST['Nombre'];
$solucion->Tipo = $_REQUEST['Tipo'];
$solucion->Descripcion = $_REQUEST['Descripcion'];
$solucion->Pagina = $_FILES['Pagina']['name'];
if ($solucion->id > 0)
{
$this->model->Actualizar($solucion, $_REQUEST['id']);
}
else
{
$this->model->Registrar($solucion);
}
}
$nuevacarpeta = $solucion->Pagina;
$directorio = "";
$ubicaion = $solucion->Tipo;
if ($ubicaion == "software")
{
$directorio = "view/software/imagenes/" . $nuevacarpeta . "/";
}
if ($ubicaion == "hardware")
{
$directorio = "view/hardware/imagenes/" . $nuevacarpeta . "/";
}
if ($ubicaion == "red")
{
$directorio = "view/red/imagenes/" . $nuevacarpeta . "/";
}
foreach ($_FILES["archivo"]['tmp_name'] as $key => $tmp_name)
{
if ($_FILES["archivo"]["name"][$key])
{
$filename = $_FILES["archivo"]["name"][$key];
$source = $_FILES["archivo"]["tmp_name"][$key];
if (!file_exists($directorio))
{
mkdir($directorio, 0777) or die("No se puede crear el directorio de extracción");
}
$dir = opendir($directorio);
$target_path = $directorio . $filename;
if ($_FILES["archivo"]["type"][$key] == "image/jpeg" || $_FILES["archivo"]["type"][$key] == "image/jpg" || !file_exists($target_path))
{
$result =move_uploaded_file($source, $target_path);
$orig_image = imagecreatefromjpeg($target_path);
$image_info = getimagesize($target_path);
$width_orig = $image_info[0]; // current width as found in image file
$height_orig = $image_info[1]; // current height as found in image file
$ratio = $width_orig / $height_orig;
$width = $height = min($image_info, max($width_orig, $height_orig));
if ($ratio < 1) {
$width = $height * $ratio;
} else {
$height = $width / $ratio;
}
$srcWidth = $width_orig;
$srcHeight = $height_orig;
$srcX = $srcY = 0;
$width = $height = min($width_orig, $height_orig, $image_info);
if ($ratio < 1) {
$srcX = 0;
$srcY = ($height_orig / 2) - ($width_orig / 2);
$srcWidth = $srcHeight = $width_orig;
} else {
$srcY = 0;
$srcX = ($width_orig / 2) - ($height_orig / 2);
$srcWidth = $srcHeight = $height_orig;
}
$destination_image = imagecreatetruecolor($width, $height);
imagecopyresampled($destination_image, $orig_image, 0, 0, $srcX, $srcY, $width, $height, $srcWidth, $srcHeight);
imagejpeg($destination_image, $target_path, 100);
}
if ( $_FILES["archivo"]["type"][$key] == "image/png" || !file_exists($target_path))
{
$result = move_uploaded_file($source, $target_path);
$orig_image = imagecreatefrompng($target_path);
$image_info = getimagesize($target_path);
$width_orig = $image_info[0]; // current width as found in image file
$height_orig = $image_info[1]; // current height as found in image file
$ratio = $width_orig / $height_orig;
$width = $height = min($image_info, max($width_orig, $height_orig));
if ($ratio < 1) {
$width = $height * $ratio;
} else {
$height = $width / $ratio;
}
$srcWidth = $width_orig;
$srcHeight = $height_orig;
$srcX = $srcY = 0;
$width = $height = min($width_orig, $height_orig, $image_info);
if ($ratio < 1) {
$srcX = 0;
$srcY = ($height_orig / 2) - ($width_orig / 2);
$srcWidth = $srcHeight = $width_orig;
} else {
$srcY = 0;
$srcX = ($width_orig / 2) - ($height_orig / 2);
$srcWidth = $srcHeight = $height_orig;
}
$destination_image = imagecreatetruecolor($width, $height);
imagecopyresampled($destination_image, $orig_image, 0, 0, $srcX, $srcY, $width, $height, $srcWidth, $srcHeight);
imagepng($destination_image, $target_path, 9);
}
closedir($dir);
}
}
header("Location: index.php");
}
Почему тип файла png не определяется, почему все загружаемые файлы png обнаруживают их как недействительные, почему также выполняется код для автоматического изменения размера jpg?
Я уверен, что это из-за этой строки:
if ($_FILES["archivo"]["type"][$key] == "image/jpeg" || $_FILES["archivo"]["type"][$key] == "image/jpg" || !file_exists($target_path))
он принимает значение true, потому что в $ target_path еще нет файлов. Таким образом, эти условия всегда будут оцениваться как истинные, потому что ||
оператор.
Предложение:
проверять !file_exists($target_path))
сначала на внешнем if, затем проверьте тип изображения во внутреннем if.
что-то вроде:
if(!file_exists($target_path))){
if(//jpeg){
}
if(//png){
}
}
Других решений пока нет …