当我要上传的文件已经存在时,如何覆盖文件?

时间:2015-07-23 13:33:17

标签: php

如果文件已存在,我想覆盖该文件。这是我的代码:

的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上应该只有声明&#34;文件已存在&#34;和一个指向overwrite.php并覆盖文件的按钮。 (没有第二个输入字段)

2 个答案:

答案 0 :(得分:1)

再次创建表单时,您需要指定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"它不会让你执行文件上传操作

除了该名称不应该是一个值,它应该是静态的,所以你可以使用它

答案 1 :(得分:0)

您正在访问$_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>";