我想覆盖一个文件,如果它已经存在于文件夹中。下面是我的代码:
index . php
<form action="check.php" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit" value="upload">Upload</button>
</form>
check.php
if(isset($_FILES['file'])) {
$file = $_FILES['file'];
$target_file = 'files/'.basename($_FILES["file"]["name"]);
if (file_exists($target_file)) {
echo "File already exist";
echo "<form action='overwrite.php' method='post'>
<button type='submit'> Overwrite</button>
</form>";
}
}
overwrite.php
move_uploaded_file($_FILES["file"]["tmp_name"], $target_file);
echo "The file is overwritten";
更新:我在问题中犯了一个错误。现在我改了。在check.php中,应该只有语句"文件已经存在"和一个指向overwrite.php并覆盖文件的按钮。(没有第二个输入字段)
当您再次创建表单时,您需要指定enctype="multipart/form-data"
echo "<form action='overwrite.php' method='post' enctype='multipart/form-data'>
<input type='file' name='file'>
<button type='submit'> Overwrite</button>
</form>";
没有enctype="multipart/form-data"
,它不会让你执行文件上传操作
不应该是一个值它应该是静态的所以你可以使用
您正在访问$_FILES["file"]
,但除非$target_file==="file"
,否则您没有找到任何内容。
将文件上传的name
属性从$target_file
更改为仅file
:
echo "<form action='overwrite.php' method='post'>
<input type='file' name='file'>
<button type='submit'> Overwrite</button>
</form>";