我对PHP很陌生,我试图制作一个表单,允许用户上传一个html文件,一个php文件并给它一个标题。
它应该使用标题创建一个新文件夹来移动这两个文件。 目前它创建的目录没有问题,但它无法从tmp目录移动上传的文件。 并给我以下错误:
警告:move_uploaded_file():无法移动' C:\ xampp \ tmp \ php2152.tmp'到' C:\ xampp \ htdocs \ var \ uploads \ pages \ Instagram'在第15行的C:\ xampp \ htdocs \ newPage.php中 错误-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() . '/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['pageHTMLUpload']['tmp_name'], "$filepathHTML")){ $stmt = $conn->prepare("INSERT INTO pages (title, htmlDir, phpDir) VALUES (?,?,?)"); $stmt->bind_param('sss', $pageName, $filepathHTML, $filepathPHP); $stmt->execute(); } else{ echo "Error -phpUpload"; } } else{ echo "Error -htmlUpload"; } } else{ echo "Error -pagename"; }
我已经读过这个问题可能是由不正确的权限引起的,但是我可以成功地将文件从另一个脚本上传到var / uploads目录中的另一个文件夹。这是与同时发布两个文件有关吗?
编辑: 所以我一直在添加一些回声来看看发生了什么;这似乎与basename有关。
回显
的结果$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
我明白了:
HTML:C:\ XAMPP \ htdocs中的/ var /上传/页/ Instagram的/ PHP:C:\ XAMPP \ htdocs中的/ var /上传/页/ Instagram的/ Gallery.php
从它的外观来看,它试图将一个tmp文件移动到Instagram目录中并不起作用的页面,但PHP包含文件的基本名称,我假设这是HTML应该做什么。
我的两个文件路径变量都是在同一个进程中定义的,为什么HTML没有附加文件名呢?
答案 0 :(得分:0)
MessageBox.Show("This is the prize you just pushed to the Database." , model.Prizes.First().GetPrizeDetailAsString());
答案 1 :(得分:0)
问题是一个非常简单的错位括号。
旧代码包括错误:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload'['name']]);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);
没有错误的新代码:
$filepathHTML = $pageName . basename($_FILES['pageHTMLUpload']['name']);
$filepathPHP = $pageName . basename($_FILES['pagePHPUpload']['name']);