警告:getimagesize()[function.getimagesize]:文件名不能为空警告消息?

1 php warnings getimagesize

直到最近,我一直在使用一些PHP将照片上传到网站.但突然间它开始触发各种错误信息.

我使用on action的表单运行以下代码:

$uploaddir = "../../user_content/photo/";
$allowed_ext = array("jpeg", "jpg", "gif", "png");

    if(isset($_POST["submit"])) {
        $file_temp = $_FILES['file']['tmp_name'];   
        $info = getimagesize($file_temp);
    } else {
        print "File not sent to server succesfully!";
        exit;
    }
Run Code Online (Sandbox Code Playgroud)

表单的文件上载部分包含以下元素:

<input name="file" type="file" class="photo_file_upload">
Run Code Online (Sandbox Code Playgroud)

用于上载的提交按钮具有以下属性:

<button type="submit" name="submit" class="photo_upload">Upload</button>
Run Code Online (Sandbox Code Playgroud)

但每当我运行它时,我总会收到以下警告:

Warning: getimagesize() [function.getimagesize]: Filename cannot be empty in (upload PHP file) on line 10
Run Code Online (Sandbox Code Playgroud)

(第10行是这部分:$ info = getimagesize($ file_temp);)

任何人对这是什么原因都有任何想法?

Yar*_*lav 8

您检查了表单是否已提交,但未检查文件是否已发送.在某些情况下,可以提交表单但不会发送文件(即文件大小大于配置中的文件大小限制).

用这个:

if(isset($_POST["submit"]) && isset($_FILES['file'])) {
    $file_temp = $_FILES['file']['tmp_name'];   
    $info = getimagesize($file_temp);
} else {
    print "File not sent to server succesfully!";
    exit;
}
Run Code Online (Sandbox Code Playgroud)

你看到&& isset($ _ FILES ['file'])是新的

或者你可以扩展它

if(isset($_POST["submit"]) && isset($_FILES['file'])) {
    $file_temp = $_FILES['file']['tmp_name'];   
    $info = getimagesize($file_temp);
} 
elseif(isset($_POST["submit"]) && !isset($_FILES['file'])) {
    print "Form was submitted but file wasn't send";
    exit;
}
else {
    print "Form wasn't submitted!";
    exit;
}
Run Code Online (Sandbox Code Playgroud)

  • 并使用 `isset($_FILES['file'])` 是不好的方法。因为 `if ($_FILES['file'])` 和 `if(isset($_FILES['file']))` 返回不同的结果!因为 `$_FILES['file']` 数组是通过表单发送的,但它是空的。所以 `isset()` 将返回 true。但我们需要检查数组是否为空,这就是为什么我们可以使用 `if($_FILES['file'])` 或 `if(empty($_FILES['file']))` 但不能使用 `isset()` (2认同)

小智 5

在 php.ini 文件中更改这些参数;(目前只允许上传和发布 2Mb 大小)。有时这是这些错误的原因。

upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 120
Run Code Online (Sandbox Code Playgroud)