php在上传之前比较文件大小

时间:2016-08-20 16:03:48

标签: php upload compare size

我遇到以下代码问题:

$target_dir = "images/";
$folder = "folder/";
$target_file = basename($_FILES["file"]["name"]);
$target_file_size = filesize($target_dir.$folder.$target_file);
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$file_comp = $_FILES["file"]["size"] - $target_file_size;

// Check if file already exists
if (file_exists($target_dir.$folder.$target_file && $file_comp == 0)){
    echo $target_file." already exists.<br>";
}

即使文件已经出现并具有相同的大小,检查也永远不会返回true,我不知道为什么。

2 个答案:

答案 0 :(得分:2)

仔细查看if

if(
    file_exists(
        $target_dir.$folder.$target_file && $file_comp == 0
    )
)

因此,您正在检查是否存在&&操作的结果。

正确的代码是:

if(
    file_exists(
        $target_dir.$folder.$target_file
    )
    &&
    $file_comp == 0
)

答案 1 :(得分:0)

目标是验证文件是否已正确上传。 如果上传过程中断,通常文件的文件大小错误,通常是次要的,然后是正常的。因此,检查文件上传的大小是否与服务器上已有相同名称的文件相同或更大,可以提供帮助。

在文件大小之间进行减法是错误的和复杂的方式,因此更好,更容易直接比较文件大小。

$file_to_upload = $_FILES["file"]["name"];
$target_file = basename($_FILES["file"]["name"]);
$target_file_size = filesize($target_dir.$folder.$target_file);

if (file_exists($target_file) && $_FILES["file"]["size"] == $target_file_size) {
echo $target_file." already exists.<br>";
}

再次感谢!