Я пытаюсь создать загрузку для изображения на веб-сайт. Я также пытаюсь изменить размер изображения перед записью в каталог. Изображения загружаются нормально, но по какой-либо причине функция move_uploaded_file возвращает false, даже если файл действительно загружается. Пожалуйста, посмотрите мой код ниже:
$fileType = $_FILES['photo_one']['type'];
//This gets all the other information from the form
$pic=($_FILES['photo_one']['name']);
$tmppic = ($_FILES['photo_one']['tmp_name']);
$front=uniqid (rand (),false);
$newpic=$front.'_'.$pic;
$newtmppic=$front.'_'.$tmppic;if($fileType == 'image/jpg' || $fileType == 'image/jpeg' )
{
$tmppic = ($_FILES['photo_one']['tmp_name']);
$src = imagecreatefromjpeg($tmppic);
}
else if($fileType == 'image/png')
{
$tmppic = ($_FILES['photo_one']['tmp_name']);
$src = imagecreatefrompng($tmppic);
}
else
{
$src = imagecreatefromgif($tmppic);
}list($width,$height)=getimagesize($tmppic);
$newwidth='700px';
$newheight=($height/$width)*$newwidth;
$tmp=imagecreatetruecolor($newwidth,$newheight);
imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height);
//This is the directory where images will be saved
$target = "../secure/profile_images/";
$newtarget = $target . basename($newpic);
imagejpeg($tmp,$newtarget,100);
//Writes the photo to the server
if(move_uploaded_file($tmp, $newtarget))
{
//Tells you if its all ok
header('Location: Picture.php#A1');
}
else {
//Gives an error if its not
echo "Sorry, there was a problem uploading your file.";
}
Вместо перенаправления на Picture.php на экране появляется сообщение «Извините, при загрузке файла произошла ошибка». Тем не менее, когда я иду, чтобы посмотреть изображение на веб-сайте, я вижу, что изображение успешно там. Я проверил журналы ошибок, и там ничего не отображается, поэтому я в растерянности. Любые советы или мысли приветствуются!
Проблема в том, что вы создаете образ с imagejpeg($tmp,$newtarget)
который создает образ и сохраняет его по указанному пути, и вы пытаетесь переместить тот же файл, который уже создан и хранится на сервере. imagejpeg
создаст изображение и сохранит его на сервере без использования move_uploaded_file
функция. если вы хотите проверить, был ли файл создан, удалите move_uploaded_file
функция со следующим кодом.
//Writes the photo to the server
if(imagejpeg($tmp,$newtarget,100))
{
//Tells you if its all ok
header('Location: Picture.php#A1');
}
else {
//Gives an error if its not
echo "Sorry, there was a problem uploading your file.";
}
Других решений пока нет …