首页 > 解决方案 > 如何在上传文件保存到服务器之前使用 getImagesize() ?

问题描述

鉴于getImagesize()需要一个字符串并且$_FILES['myfile']是一个数组,我试图访问临时文件夹并将文件上传到那里以获得图像大小,但我确实收到了错误。

这是我得到的错误:

警告:getimagesize(/home/everymorning/public_html/tmp/phpNFuAMD/images.jpeg):无法打开流:第 48 行的 /home/everymorning/public_html/demo1.php 中没有此类文件或目录

这是我尝试过的:

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

echo getimagesize($string);

如果我尝试直接使用临时路径,我仍然会收到错误消息:

如果我使用:

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

我得到:

注意:第 47 行 /home/everymorning/public_html/demo1.php 中的数组到字符串转换

标签: phpfilefile-uploadimage-uploadinggetimagesize

解决方案


我认为getimagesize($fileName)有以下几点-

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

您正在尝试回显 的数组错误Array to string conversion。事实上,回声不能打印数组,而是print_r那些var_dump可以打印数组信息的。

要计算图像的大小,您可以简单地通过将高度宽度和用于表示像素的位相乘来计算,以下算术表达式可以为您提供以位为单位的图像大小。

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

推荐阅读