Почему функция getimagesize () ведет себя по-разному для другого переданного параметра [index из суперглобального массива $ _FILES]?

У меня есть HTML-форма с кодом, чтобы выбрать файл изображения и загрузить его на сервер.

У меня также есть неполный код, написанный на PHP, до получения размера изображения, которое пользователь загружает на сервер.

Пожалуйста, посмотрите на фрагменты кода ниже.

HTML-код формы:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

PHP код 1:

<?php
$target_dir = "C:/xampp/htdocs/php_playground/uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
echo "Check Value with tmp_name parameter : \n";
echo "<pre>";
print_r($check);
echo "</pre>";
die;
}
?>

Вывод PHP-кода 1 выглядит следующим образом:

Check Value with tmp_name parameter :

Array
(
[0] => 1536
[1] => 2048
[2] => 2
[3] => width="1536" height="2048"[bits] => 8
[channels] => 3
[mime] => image/jpeg
)

PHP код 2:

 <?php
$target_dir = "C:/xampp/htdocs/php_playground/uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["name"]);
echo "Check Value with name parameter : \n";
echo "<pre>";
print_r($check);
echo "</pre>";
die;
}
?>

Вывод PHP-кода 2 выглядит следующим образом:

Предупреждение: getimagesize (demo_image.jpg): не удалось открыть поток: нет такого файла или каталога в C: \ XAMPP \ HTDOCS \ php_playground \ загрузки \ upload.php онлайн 8

Проверьте значение с помощью параметра name:

Теперь мой запрос таков, как я пытаюсь загрузить одно и то же изображение в обеих вышеуказанных программах, поэтому я получаю два разных вывода для getimagesize() функция для изменения значения индекса с $_FILES массив?

Пожалуйста, направьте меня в этом отношении.

Благодарю.

-1

Решение

Потому что во втором коде, где вы используете «имя», функция getimagesize не может прочитать файл.

Вот почему:

Переменная «name» исходит из вашего браузера, поэтому на стороне сервера функция не может найти изображение и, следовательно, не может предоставить информацию и выдать предупреждение.
В то время как «tmp_name» является временным путем к вашему местоположению на стороне сервера, где загружаемый файл временно хранится. Следовательно, когда вы используете «имя_папки», функция может прочитать файл и предоставить вам информацию.

Для получения дополнительной информации просто распечатайте переменную $ _FILES, чтобы увидеть разницу между «name» и «tmp_name».

Ref: http://php.net/manual/en/reserved.variables.files.php

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector