Загрузка изображения PHP
Делаю проверку на изображение и ресайз, как после этого загрузить его в папку (mkdir)?
$filename = $_FILES ["filename"]["tmp_name"];
$size = getimagesize($filename);
if ($size){
$width = 150;
$height = 150;
header("Content-type: {$size['mime']}");
list($width_orig, $height_orig) = getimagesize($filename);
if ($width && ($width_orig < $height_orig)) {
$width = ($height / $height_orig) * $width_orig;
} else {
$height = ($width / $width_orig) * $height_orig;
}
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
imagejpeg($image_p, null, 100);
unlink ($filename);
mkdir('../img/' . $id . '/', 0777, true);
move_uploaded_file.....?
} else {
exit("Загружаемый файл не изображение...");
}
Ответы (1 шт):
Автор решения: u_mulder
→ Ссылка
Не очень понятно зачем ты пытаешься использовать move_uploaded_file, хотя на самом деле судя по логике тебе нужно в файл сохранить ресурс из первого аргумента imagejpeg.
Открываем мануал по imagejpeg и видим, что imagejpeg умеет записывать в файл (пример 2).
Следовательно что нужно сделать? Нужно в качестве второго аргумента передать нужный путь до файла:
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($filename);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig);
$dir = '../img/' . $id . '/';
mkdir($dir, 0777, true);
$newFileName = 'some_file.jpg';
imagejpeg($image_p, $dir . $newFileName, 100);
unlink ($filename);
На этом все, никаких move_uploaded_file не требуется. Ставить header тоже ни к чему.