PHP检查是否有选择上传的文件

标签 php post

<分区>

我有这个表格,我想检查用户是否选择了一个文件。

<form action="upload.php" method="POST" enctype="multipart/form-data" >
    <select name="category">
        <option value="cat1" name="cat1">Productfotografie</option>
        <option value="cat2" name="cat2">Portretten</option>
        <option value="cat3" name="cat3">Achitectuur</option>
    </select>
    <input type="file" name="file_upload">
    <input type="submit" name="submit" value="Upload photo">
</form>

我写了这段 PHP 代码来测试它

if (empty($_POST) === false) {
    $fileupload = $_POST['file_upload'];
    if (empty($fileupload) === true) { //
            echo "Error no file selected";     
    } else {
        print_r($_FILES);
    }
} 

但即使我确实选择了某些内容,我也会收到“没有选择文件的错误”。有什么线索吗?抱歉,我真的是 PHP 新手。

编辑: 我已经尝试替换 $fileupload = $_FILES['file_upload'] 但它打印了一个空错误

(Array ( [file_upload] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) ))

当我不输入文件时?

最佳答案

使用$_FILES 数组和UPLOAD_ERR_NO_FILE 常量:

if(!isset($_FILES['file_upload']) || $_FILES['file_upload']['error'] == UPLOAD_ERR_NO_FILE) {
    echo "Error no file selected"; 
} else {
    print_r($_FILES);
}

您还可以检查 UPLOAD_ERR_OK,它指示文件是否已成功上传(存在并且没有错误)。

注意:您不能在 $_FILES['file_upoad'] 数组上使用 empty(),因为即使没有文件上传,数组仍然会被填充并且error 元素已设置,这意味着 empty() 将返回 false

关于PHP检查是否有选择上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432476/

相关文章:

php - 使用 php 用 css 设计一个词

php - 下拉列表在 chrome 中带有滚动条

javascript - location.reload() 在 chrome 和 ff 在 POST 到达的页面上表现不同

javascript - 为什么我的表单数据在使用 Angular $http 时没有发布

php - 分组/有奇怪的行为

php - 如何将记录从一个表移动到具有选定字段的其他表?

php - Php 中另一个数组中的数组

javascript - 使用Ajax从javascript发送数组到php,不使用表单

java - java中如何接收文件(servlet/jsp)

python - FacePy Facebook 帖子错误