Php 移动上传的文件在我的本地机器上无法工作
我是PHP领域的新手。这是我尝试上载的文件:Php 移动上传的文件在我的本地机器上无法工作,php,Php,我是PHP领域的新手。这是我尝试上载的文件: <?php if(isset($_FILES['file'])) { $file = $_FILES['file']; if($file['error'] === 0) { $distination = 'uploads/'; $file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
<?php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
if($file['error'] === 0) {
$distination = 'uploads/';
$file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = $distination . uniqid('', true) . '.' . $file_ext;
if(!move_uploaded_file($file['name'], $filename)) {
echo "File upload failed!";
}
}
}
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
move\u上传的\u文件的返回值始终为false。我在上载脚本文件所在的目录中创建了uploads文件夹。您的主要问题是,您使用的是名称,而不是$\u FILES数组中的tmp\u name值 名称是上传文件的原始名称,tmp_名称是上传后文件的位置 修正了下面的版本。我还添加了对目标目录的检查,并在不可用时自动创建它
<?php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
if($file['error'] === 0) {
$distination = 'uploads/';
if(!file_exists($distination)){
mkdir($distination, 0777, true);
}
$file_ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$filename = $distination . uniqid('', true) . '.' . $file_ext;
print_r($file);
if(!move_uploaded_file($file['tmp_name'], $filename)) {
echo "File upload failed!";
}
}
}
?>
<form action="testupload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
web服务器用户可能无法写入上载/目录。始终在开发代码时打开错误报告并显示:error\u reportingE\u ALL;ini设置“显示错误”,1;您将看到失败的原因。请尝试添加$distinion=$\u SERVER['DOCUMENT\u ROOT']./uploads/';。。。这完全取决于“uploads”在文件夹结构中的位置,但至少我希望它是“/uploads/”或“/uploads”,而不仅仅是“uploads/”,并确保“uniqid”返回一个值,而不是空白。@MichaelBerkowski我在哪里添加错误报告ini设置“显示错误”,1;在任何其他PHP代码之前,将其添加到脚本顶部。