Xavier Benedict Astor Ответов: 1

Move_uploaded_file не работает должным образом


Здравствуйте, у меня возникла проблема с загрузкой файла в базу данных и в каталог "upload" ,

У меня есть база данных с именем "saide_db", таблицы с названием "пользовательские файлы" и "загрузить" каталог мои загруженные файлы. Я могу это сказать upload.php файл отлично работает на локальном компьютере даже при подключении к удаленной базе данных, но когда я пытаюсь загрузить файл, он всегда выполняет только функцию "Пожалуйста, выберите файл для загрузки!", в результате чего каталог "загрузить" всегда пуст, даже если у меня есть файл, включенный в форму загрузки.

Пожалуйста, проверьте "upload.php" код ниже и дайте мне знать, если вы обнаружите какую-либо ошибку/Ы и предложите решение/ы. Спасибо.

Что я уже пробовал:

<?php

	if(isset($_POST['btnSubmit'])){		
		$errors = array();
		
		$extension = array("jpeg","jpg","png","gif");
		
		$bytes = 1024;
		$allowedKB = 100;
		$totalBytes = $allowedKB * $bytes;
		
		if(isset($_FILES["files"])==false)
		{
			echo "Please select file to upload!";
			return;
		}
		
		$conn = mysqli_connect("localhost","root","","saide_db");	
		
		foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name)
		{
			$uploadThisFile = true;
			
			$file_name=$_FILES["files"]["name"][$key];
			$file_tmp=$_FILES["files"]["tmp_name"][$key];
			
			$ext=pathinfo($file_name,PATHINFO_EXTENSION);

			if(!in_array(strtolower($ext),$extension))
			{
				array_push($errors, "File type is invalid. Name:- ".$file_name);
				$uploadThisFile = false;
			}				
			
			if($_FILES["files"]["size"][$key] > $totalBytes){
				array_push($errors, "File size must be less than 100KB. Name:- ".$file_name);
				$uploadThisFile = false;
			}
			
			if(file_exists("Upload/".$_FILES["files"]["name"][$key]))
			{
				array_push($errors, "File already exists. Name:- ". $file_name);
				$uploadThisFile = false;
			}
			
			if($uploadThisFile){
				$filename=basename($file_name,$ext);
				$newFileName=$filename.$ext;				
				move_uploaded_file($_FILES["files"]["tmp_name"][$key],"Upload/".$newFileName);
				
				$query = "INSERT INTO userfiles(FilePath, FileName) VALUES('Upload','".$newFileName."')";
				
				mysqli_query($conn, $query);			
			}
		}
		
		mysqli_close($conn);
		
		$count = count($errors);
		
		if($count != 0){
			foreach($errors as $error){
				echo $error."<br/>";
			}
		}		
	}
?>

1 Ответов

Рейтинг:
2

phil.o

if (isset($_FILES["files"]) == false)
{
   echo "Please select file to upload!";
   return;
}
Если вы доберетесь до echo линия, это означает, что глобальный $_FILES["files"] не ставить.

Вот ссылка на страницу, объясняющую, как работать с загрузками более безопасным способом:
PHP: обработка загрузки файлов - руководство пользователя[^]
Перепроверьте дважды name атрибут самого input тег на стороне HTML. Согласно вашему PHP-коду, у вас должно быть что-то вроде <input name="files" ... >.


Xavier Benedict Astor

Здравствуйте, уже пробовал редактировать "Эхо ", Пожалуйста, выберите"" часть кода. Кроме того, при проверке кажется, что мой код html-формы все в порядке. Но, к сожалению, все равно получаю тот же результат.