PHP 文件上传问题 - “move_uploaded_files”未按预期工作

问题描述 投票:0回答:2

我目前正在为我的 PHP 应用程序开发文件上传功能,并且在 move_uploaded_file 函数方面遇到问题。这是我的代码的简化版本:

<?php
$targetDirectory = "uploads/";
$targetFile = $targetDirectory . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_files($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "File uploaded successfully!";
} else {
    echo "Error uploading file.";
}
?>

尽管为“上传”目录设置了正确的权限,但文件似乎没有移动到那里。我已经检查了 $_FILES 数组,它包含预期的信息。可能是什么原因导致此问题?如何排除故障并解决它?

附加信息:

  • 我使用的是 PHP 7.4。
  • “uploads”目录具有必要的写入权限。
  • 我正在本地开发服务器上测试它。

任何帮助或见解将不胜感激!

php file upload
2个回答
1
投票

您的代码中有一个小错字。函数名称应该是 move_uploaded_file(单数“文件”),而不是 move_uploaded_files(复数“文件”)。这是更正后的代码:

<?php
$targetDirectory = "uploads/";
$targetFile = $targetDirectory . basename($_FILES["fileToUpload"]["name"]);

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
    echo "File uploaded successfully!";
} else {
    echo "Error uploading file.";
}
?>

1
投票

我找到了另一个代码

<?php
$targetDirectory = "uploads/";

// Check if the form was submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Check if there was no error during file upload
    if ($_FILES["fileToUpload"]["error"] == UPLOAD_ERR_OK) {
        $targetFile = $targetDirectory . basename($_FILES["fileToUpload"]["name"]);

        // Check if the file is of the expected type and size
        $allowedTypes = ["jpg", "jpeg", "png", "gif"]; // Add more if needed
        $fileExtension = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));

        if (in_array($fileExtension, $allowedTypes) && $_FILES["fileToUpload"]["size"] <= 5000000) { // Adjust size limit as needed
            if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
                echo "File uploaded successfully!";
            } else {
                echo "Error uploading file.";
            }
        } else {
            echo "Invalid file type or size.";
        }
    } else {
        echo "Error during file upload: " . $_FILES["fileToUpload"]["error"];
    }
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.