我目前正在为我的 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 数组,它包含预期的信息。可能是什么原因导致此问题?如何排除故障并解决它?
附加信息:
任何帮助或见解将不胜感激!
您的代码中有一个小错字。函数名称应该是 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.";
}
?>
我找到了另一个代码
<?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"];
}
}
?>