getimagesize()没有返回数据?

时间:2012-01-16 20:59:29

标签: php image-processing

尝试上传.JPG文件时出现以下错误。

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in H:\Programs\webserver\root\media\images\upload.php on line 43

以下是upload.php文件的一部分:

if(isset($_FILES['files']))
{
    $cat = $_POST['cat'];
    $title = $_POST['title'];
    $album = $_POST['album'];

    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name)
    {

        // get dimensions of uploaded images
        echo $temp = $_FILES['files']['tmp_name'][$key]; //location of file
        echo $type = $_FILES['files']['type'][$key]; //image type
        echo $size = $_FILES['files']['size'][$key]; // image size
        >> line 43 >>**echo $size2 = getimagesize($temp); //function to get info of file and put into array**
        echo $width = $size2[0]; // first part of the array is the image width
        echo $height = $size2[1]; // second part fo the array is the image width

        if($type == 'image/jpeg')
        {
        $filetype = '.jpeg';
        }else{
        $filetype = str_replace('image/','',$type);
        }
        $random_name = rand(1000,9999).rand(1000,9999).rand(1000,9999).rand(1000,9999);
        $path = 'img/'.$random_name . $_FILES['files']['name'][$key];
        $thumb_path = 'img/thumb_/'.$random_name .$_FILES['files']['name'][$key];

我有另一个上传的.jpg图片文件,用于测试哪些上传效果不错,同时.png和.gif文件也可以正常上传。

只是补充一点,我尝试了几个相似大小的图像文件并收到了同样的错误。 第一个Image文件是4.2MB,第二个是5MB。为什么文件大小会阻止它上传?

当使用$ _FILES ['files'] ['error'] [$ key]; - 它返回1.

这是我在使用print_r时得到的:

Array ( [files] => Array ( [name] => Array ( [0] => DSCN0354.JPG ) [type] => Array ( [0] => ) [tmp_name] => Array ( [0] => ) [error] => Array ( [0] => 1 ) [size] => Array ( [0] => 0 ) ) )

5 个答案:

答案 0 :(得分:2)

如果添加一些错误处理,您可以使用error code轻松查看问题所在:

foreach($_FILES['files']['tmp_name'] as $key => $tmp_name)
{
  if ($_FILES['files']['error'][$key] == UPLOAD_ERR_OK)
  {
     // good
  }
  else
  {
     // not good, see messages on http://www.php.net/manual/en/features.file-upload.errors.php
  }
}

答案 1 :(得分:2)

让我们看看知识:

  • 您可以上传.jpg,.gif,.png没问题
  • 您在上传特定的.jpg图片时遇到问题

这些知识让我相信问题图像对于php.ini设置中当前允许的upload_max_filesize来说太大了:

$ -> php -i | fgrep -i size

upload_max_filesize => 2M => 2M

尝试将尺寸增加到6M或8M,您的更大图像应该可以正常工作。

答案 2 :(得分:1)

你必须在访问tmp_name之前检查$_FILES['error'][$key] - 文件没有上传,因为它太大或其他原因(你会发现'错误'字段的值)

答案 3 :(得分:1)

Also when using $_FILES['files']['error'][$key]; - it returns 1.

错误1:上传的文件超过 php.ini中的upload_max_filesize指令。

(见http://www.php.net/manual/en/features.file-upload.errors.php

答案 4 :(得分:0)

错误消息指出提供的文件名为空。

您正在使用:

$size2 = getimagesize($temp);

你从哪里得到$ temp?它是foreach(),如果是,你应该使用$ tmp_name。