Ваша строка $image = $_FILES['file'];;
(кроме двух точек с запятой - удалите одну из них!) Определяет $image
как массив, заданный $_FILES['file']
.Вы уже знаете, что это массив, так как вы обращаетесь к его свойствам вверху страницы.
Затем вы передаете этот массив в imagecreatefromjpeg()
, который ожидает путь к файлу.Вместо этого вы должны передать $fileTmpName
.
Редактировать: Добавлен слегка сжатый, 100% полный проверяемый код (без содержимого MongoDB и перенаправления заголовка) в комплекте с формой, чтобы вы могли проверить:
<?php
if (isset($_POST['submit'])) {
$file = $_FILES['file'];
$fileName = $_FILES['file']['name'];
$fileTmpName = $_FILES['file']['tmp_name'];
$fileSize = $_FILES['file']['size'];
$fileError = $_FILES['file']['error'];
$fileType = $_FILES['file']['type'];
$fileExt = explode('.', $fileName);
$fileActualExt = strtolower(end($fileExt));
$fileAuthor = $_POST['author'];
$fileTitle = $_POST['title'];
$allowed = array('jpg', 'png', 'jpeg');
if (in_array($fileActualExt, $allowed)) {
if ($fileError === 0) {
if ($fileSize < 1024000) {
$fileNameID = uniqid('', true) . "." . $fileActualExt;
$fileDestination = '../images/' . $fileNameID;
$fontSize = 4;
$text = $_POST['watermark'];
$xPosition = 10;
$yPosition = 10;
$newImg = imagecreatefromjpeg($fileTmpName);
$fontColor2 = imagecolorallocate($newImg, 255, 0, 0);
imagestring($newImg, $fontSize, $xPosition, $yPosition, $text, $fontColor2);
$save = "../images/" . "water" . $fileNameID . ".png";
imagepng($newImg, $save, 0, null);
imagedestroy($newImg);
move_uploaded_file($fileTmpName, $fileDestination);
} else {
echo "The image size is too big";
}
} else {
echo "There was an error with the image";
}
} else {
echo "You can not use this file extension";
}
}
?>
<form enctype="multipart/form-data" method="POST">
<label>Watermark</label><input type="text" name="watermark"><br>
<input type="file" name="file">
<input type="submit" name="submit">
</form>
Есть несколько других проблем с кодом (например, вы должны проверять тип файла по типу mime, а не по расширению файла, и загруженный файл JPEG будет заканчиваться именем файла water {uuid} .jpg.png ), но на ваш вопрос должен быть хотя бы ответ.