PHP基本上传文件脚本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP基本上传文件脚本相关的知识,希望对你有一定的参考价值。

这是我第一次尝试通过php上传文件。

这是我的html

<form role="form" action="api/upload.php" id="uploadForm" method="post" enctype="multipart/form-data">
   <input id="fileToUpload" name="fileToUpload" type="file" class="file" />
   <button type="submit" name="submit" id="submit">Upload</button>
</form>

现在这里是参考“api / upload.php”的PHP脚本:

<?php
$target_dir = "files\";

if(isset($_POST["submit"])) {
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
}

if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}

if ($_FILES["fileToUpload"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}

if ($uploadOk == 0) {
echo $uploadOk . "Sorry, your file was not uploaded.";
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["name"], $target_file)) {
   echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
  } else{
     echo "Sorry, there was an error uploading your file.";
  }
} 
?>

这可能是一个逻辑错误。我不确定。无论如何,我不断收到消息:

抱歉,上传文件时出错

当我回显$ uploadOk时,它仍然是1.如何找到我的错误?

答案

使用$_FILES["fileToUpload"]["tmp_name"]而不是$_FILES["fileToUpload"]["name"]

应该

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file);

笔记:-

$_FILES["fileToUpload"]["name"]只是上传文件的名称。 $_FILES["fileToUpload"]["tmp_name"]是保存内容的临时文件。

希望这可以帮助。

[编辑1]

我在为按钮添加value="submit"属性时错了。 name="submit"属性足以进行isset($_POST["submit"))检查。

以上是关于PHP基本上传文件脚本的主要内容,如果未能解决你的问题,请参考以下文章

PHP代码审计学习——文件上传

如何通过 PHP 使用 curl 上传文件 [关闭]

如何使用curl使用php上传文件[关闭]

php文件上传漏洞代码只允许上传图片

单脚本PHP上传文件到服务器

单脚本PHP上传文件到服务器