Я не могу загрузить файл на localhost с помощью PHP. Я создал простую форму html и php-скрипт. Однако я получаю эти сообщения об ошибках.
'Import.html'
<html> <body> <form action="import.php" method="POST" enctype="multipart/form-data"> <p> <label for="file">Choose import.xml</label><br/> <input type="file" name="import" id="import" /></p> <p><input type="submit" name="submit" value="Submit" /></p> </form> <body> </html>
'Import.php'
<?php if ($_FILES["import"]["error"] > 0) { echo "Return Code: " . $_FILES["import"]["error"] . "<br />"; } else { echo "Upload: " . $_FILES["import"]["name"] . "<br />"; echo "Type: " . $_FILES["import"]["type"] . "<br />"; echo "Size: " . ($_FILES["import"]["size"] / 1024) . " Kb<br />"; echo "Temp file: " . $_FILES["import"]["tmp_name"] . "<br />"; if (file_exists("upload/" . $_FILES["import"]["name"])) { echo $_FILES["import"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["import"]["tmp_name"], "upload/" . $_FILES["import"]["name"]); echo "Stored in: " . "upload/" . $_FILES["import"]["name"]; } } ?>
Сообщения об ошибках:
Предупреждение: move_uploaded_file (upload / import.xml) [function.move-uploaded-file]: не удалось открыть поток: нет такого файла или каталога в C: \ xampp \ htdocs \ teecom \ admin \ import.php в строке 20
Предупреждение: move_uploaded_file () [function.move-uploaded-file]: Невозможно переместить 'C: \ Windows \ Temp \ phpD02C.tmp' в 'upload / import.xml' в C: \ xampp \ htdocs \ teecom \ admin \ import.php в строке 20 Сохранено в: upload / import.xml
Ну, в соответствии с вашими локальными каталогами вы можете попробовать следующее:
if (!file_exists("teecom/upload")) { mkdir("teecom/upload", 0777, true); } if (file_exists("teecom/upload/" . $_FILES["import"]["name"])) { echo $_FILES["import"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["import"]["tmp_name"], "teecom/upload/" . $_FILES["import"]["name"]); echo "Stored in: " . "upload/" . $_FILES["import"]["name"]; }
Похоже, вы используете Windows.
Я по возможности изменил бы путь назначения от относительного к абсолютному пути. Например:
move_uploaded_file($_FILES["import"]["tmp_name"], "C:/upload/" . $_FILES["import"]["name"]);
Или попробуйте путь:
$_SERVER['DOCUMENT_ROOT'] . '/upload/' . $_FILES['import']['name']
Также попробуйте создать папку C: \ upload \ или C: \ xampp \ htdocs \ upload \, прежде чем пытаться загрузить ее.
Ваш файл явно не был загружен во временную папку, из которой предполагается перемещать функцию move_uploaded_file
. Существует множество причин, по которым наиболее часто случается, что у вас нет прав на запись во временную папку, используемую PHP.
Это старо, но для людей, у которых есть эта проблема в будущем, все, что я сделал для моего localhost (wamp), – это щелчок по значку сервера, перейдите на PHP, настройки PHP и выберите «Загрузка файлов».
Это сработало для меня.