【问题标题】:How to use getImagesize() for an uploaded file before it gets saved into the server?如何在上传文件保存到服务器之前使用 getImagesize() ?
【发布时间】:2019-05-06 12:19:06
【问题描述】:

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

这是我得到的错误:

警告: 获取图像大小(/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);

还有if I try to use the temporary path directly,我还是报错:

如果我使用:

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

我明白了:

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

【问题讨论】:

  • 为什么不在move_uploaded_file()之后试试呢?
  • getImageSize 总是返回一个数组...为什么不试试 filesize( ) 它返回文件大小(以字节为单位)
  • $_FILES['myfile']['name'] 只是客户端发送的文件名,临时文件与该字符串无关。 $_SERVER['DOCUMENT_ROOT'].$_FILES['myfile']['tmp_name'] 是临时文件的名称。

标签: php file file-upload image-uploading getimagesize


【解决方案1】:

我认为getimagesize($fileName) 有以下内容-

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

您正在尝试回显Array to string conversion 的数组错误。事实上,echo 无法打印数组,而 print_rvar_dump 是可以打印数组信息的那些。

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

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

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 2013-04-12
    • 2014-12-19
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多