Я довольно новичок в PHP, я пытаюсь создать форму, чтобы позволить пользователю загрузить HTML-файл, PHP-файл и дать ему название.
Следует использовать заголовок для создания новой папки, в которую нужно переместить два файла.
В настоящее время он создает каталог без проблем, однако он не может переместить загруженный файл из каталога tmp.
и дает мне следующую ошибку:
Предупреждение: move_uploaded_file (): невозможно переместить ‘C: \ xampp \ tmp \ php2152.tmp’ в ‘C: \ xampp \ htdocs \ var \ uploads \ pages \ Instagram’ в C: \ xampp \ htdocs \ newPage.php в строка 15
Ошибка -htmlUpload
вот моя форма HTML:
<form action="newPage.php" method="post" enctype='multipart/form-data'>
<label for="pageName">Enter Page Name: </label>
<input type="text" name="pageName" id="pageName" />
<br />
<label for="pageHTMLUpload">HTML File: </label>
<input type="file" name="pageHTMLUpload" id="pageHTMLUpload" />
<br />
<label for="pagePHPUpload">PHP File: </label>
<input type="file" name="pagePHPUpload" id="pagePHPUpload" />
<br />
<center>
<button class="btn btn-dark" type="submit">Submit</button>
</center>
и вот соответствующий php:
$ dir = getcwd (). '/ Вар / добавление / страницы /'; $ pageName = $ dir. $ _POST [ 'Pagename']; if (mkdir ($ pageName, 0777, true)) { $ filepathHTML = $ pageName. Базовое имя ($ _ FILES [[ 'имя' 'pageHTMLUpload']]); $ filepathPHP = $ pageName. Базовое имя ($ _ FILES [ 'pagePHPUpload'] [ 'имя']); if (move_uploaded_file ($ _ FILES ['pageHTMLUpload'] ['tmp_name'], "$ filepathHTML")) { if (move_uploaded_file ($ _ FILES ['pageHTMLUpload'] ['tmp_name'], "$ filepathHTML")) { $ stmt = $ conn-> prepare ("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)"); $ stmt-> bind_param ('sss', $ pageName, $ filepathHTML, $ filepathPHP); $ Stmt-> Execute (); } еще { echo "Ошибка -phpUpload"; } } еще { echo "Ошибка -htmlUpload"; } } еще { echo "Ошибка -pagename"; }
Я читал, что эта проблема может быть вызвана неправильными разрешениями, однако я могу успешно загружать файлы из другого скрипта в другую папку в каталоге var / uploads. Это связано с публикацией двух файлов одновременно?
редактировать:
Так что я добавил немного эха, чтобы увидеть, что происходит; и это похоже на проблему с базовым именем.
повторяя результат
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
Я получил:
HTML: C: \ XAMPP \ HTDOCS / вар / добавления / страницы / Instagram /
PHP: C: \ XAMPP \ HTDOCS / вар / добавления / страницы / Instagram / Gallery.php
Судя по всему, он пытается переместить файл tmp на страницы в виде каталога Instagram, который не работает, однако PHP содержит базовое имя файла, и я предполагаю, что именно это должен делать HTML.
Обе мои переменные filepath определены в одном и том же процессе, почему к HTML-переменной не прикреплено имя файла?
should be used this code.
$dir = getcwd() . '/var/uploads/pages/';
$pageName = $dir . $_POST['pageName'];
if(mkdir($pageName, 0777, true)){
$filepathHTML = $pageName.basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName.basename($_FILES['pagePHPUpload']['name']);
if(move_uploaded_file($_FILES['pageHTMLUpload']['tmp_name'], $filepathHTML))
{
if(move_uploaded_file($_FILES['pagePHPUpload']['tmp_name'], $filepathPHP ))
{
$stmt = $conn->prepare("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)");
$stmt->bind_param($pageName, $filepathHTML, $filepathPHP);
$stmt->execute();
}
else{
echo "Error -phpUpload";
}
}
else{
echo "Error -htmlUpload";
}
}
else{
echo "Error -pagename";
}
Проблема была в очень простой неуместной скобке.
Старый код, включая ошибку:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
Новый код без ошибок:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload']['name']);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);