警告:filesize():stat为img.jpg失败

时间:2015-02-03 15:42:58

标签: php filesize

我正在尝试获取图片的文件大小,并且不断获得Warning: filesize(): stat failed for img.jpg

这就是我所做的:

$path = $_FILES['profile']['name'];
$path = iconv('UTF-8', 'ISO-8859-1',$path);
if (!in_array(pathinfo($path,PATHINFO_EXTENSION),$allowed)) {
    return "file";
} elseif (filesize($path)>(1024*600))

我能够获得文件扩展名没问题,但filesize()似乎无法正常工作。我一直在阅读,但确实找到this,但它没有解决问题。任何帮助深表感谢!

3 个答案:

答案 0 :(得分:6)

$ _FILES数组中的

['name']是CLIENT计算机上文件的名称。它仅供参考,与您服务器上实际存储的内容完全无关。上传完成后,你需要查看['tmp_name'],这是PHP在服务器上临时存储文件的地方:

$path = $_FILES['profile']['tmp_name'];
                          ^^^^^^^^^^^^

答案 1 :(得分:3)

$_FILES['profile']['name'] 只是文件的名称 ..您需要访问

$_FILES['profile']['tmp_name'] 

将为您提供系统上文件的临时路径。 这是 http://php.net/manual/en/reserved.variables.files.php

您也可以使用

访问文件大小
$_FILE['profile']['size']

答案 2 :(得分:1)

echo "---- NULL ---------------\n";
$path = null;
echo "File size is: " . filesize($path) . "\n";

echo "---- FILE EXISTS --------\n";
$path = '/home/luca/Scrivania/file_that_exists.jpg';
echo "File size is: " . filesize($path) . "\n";

echo "---- FILE NOT EXISTS ----\n";
$path = 'file/does/not/exists.jpg';
echo "File size is: " . filesize($path) . "\n";

会导致:

---- NULL ---------------
File size is: 
---- FILE EXISTS --------
File size is: 78953
---- FILE NOT EXISTS ----

Warning: filesize(): stat failed for file/does/not/exists.jpg in /home/luca/Scrivania/test.php on line 13

Call Stack:
    0.0001     642120   1. {main}() /home/luca/Scrivania/test.php:0
    0.0002     642448   2. filesize() /home/luca/Scrivania/test.php:13

这意味着您的变量

$_FILES['profile']['name'];

不是指向SERVER上的有效文件位置,而是指向:

之一
  1. 客户端PC上的文件路径(不在服务器上),在这种情况下肯定您无法直接访问它
  2. 不是字符串的东西
  3. 但它不是null(否则你的简单就会返回null(见第一个例子)
  4. 请下次发布有效的PHP代码。

    卢卡

    <强>更新

    正如Marc B建议您必须使用$_FILES['profile']['tmp_name'];