Как использовать getImagesize () для загруженного файла до его сохранения на сервере? - PullRequest
0 голосов
/ 06 мая 2019

Учитывая, что getImagesize () требует строку, а $_FILES['myfile'] - массив, я пытался добраться до временной папки и загруженного туда файла, чтобы получить размер изображения, но я действительно получаю ошибку.

Это ошибка, которую я получаю:

Внимание: getimagesize (/home/everymorning/public_html/tmp/phpNFuAMD/images.jpeg): не удалось открыть поток: нет такого файла или каталога в /home/everymorning/public_html/demo1.php в строке 48

А вот что я попробовал:

$string = $_SERVER['DOCUMENT_ROOT'].$_FILES['myfile']['tmp_name'].'/'.$_FILES['myfile']['name'];

echo getimagesize($string);

И , если я пытаюсь использовать временный путь напрямую , я все равно получаю ошибку:

Если я использую:

getimagesize($_FILES['myfile']['tmp_name']);

Я получаю:

Примечание: преобразование массива в строку в /home/everymorning/public_html/demo1.php в строке 47

1 Ответ

1 голос
/ 06 мая 2019

Я думаю, getimagesize($fileName) имеет следующие вещи:

Array ( [0] => 667 
        [1] => 184 
        [2] => 3 
        [3] => width="667" height="184" 
        [bits] => 8 
        [mime] => image/png );

Вы пытаетесь отобразить ошибку массива Array to string conversion.Infact echo не может печатать массив, вместо этого print_r и var_dump - те, которые могут печатать информацию о массиве.

Чтобы вычислить размер изображения, вы можете просто рассчитать, умножив ширину по высоте и количество бит, используемых для представления.пиксель и следующее арифметическое выражение может дать вам размер изображения в битах.

 $imageInfo = getimagesize($fileName);
 $size = $imageInfo[0] * $imageInfo[1] * $imageInfo['bits'];
...