繁体   English   中英

一个 HTML 表单中的两个提交按钮,用于上传或删除带有 PHP 的文件

[英]Two submit buttons in one HTML form, for uploading or deleting a file with PHP

我尝试创建一个包含两个submit按钮的表单,一个用于上传文件,第二个用于从特定位置删除选定的文件。 上传过程成功,但删除过程失败。

这是两个submit按钮的代码:

<html>
<head>
<title>Upload and Delete file</title>
</head>
    <body>
        <form action="upanddel.php" method="post" enctype="multipart/form-data">
            Select File to Upload:<input type="file" name="uploadfile" value="upload">
            <input type="submit" name="upload" value="Upload File">
            <input type="submit" name="delete" value="Delete File"><br><br>
        </form>
    </body>
</html>

这是用于上传或删除文件的 PHP 代码:

<?php
if(isset($_POST['upload'])) {
    onFunc();
}
if(isset($_POST['delete'])) {
    offFunc();
}

function onFunc(){
    $filenameupload=__DIR__.'\\upload\\'.$_FILES['uploadfile']['name'];
    if(!file_exists($filenameupload)){
        move_uploaded_file($_FILES['uploadfile']['tmp_name'],$filenameupload);
        print_r( $_POST);
        $_POST=array();
    }
}

function offFunc(){
    $filenamedelete=__DIR__."\\upload\\".$_FILES['uploadfile']['name'];
    unlink($filenamedelete);
    echo "file is deleted";
}
?>

错误是:

警告:取消链接(C:\wamp64\www\IntroducingPHP\upload\Events-News.xlsx):第 5 行 C:\wamp64\www\IntroducingPHP\Deletefile.php 中的资源暂时不可用

解决办法是什么?

你提到的路径有'\\'。 从那里和警告中提到的路径看来,您正在使用 Windows 操作系统。

提供给方法 unlink() 的文件路径似乎有效,因为警告说资源暂时不可用。

这意味着某些进程正在访问您的文件,这就是不允许删除它的原因。

有两种可能:

  • 文件上传后打开吗? 在这种情况下,如果文件已打开,则不允许将其删除。 所以关闭它并尝试再次删除。

  • 如果您没有打开该文件,那么您用来引用该文件的变量可能仍然持有它。

在 onFunc() 中,您使用$filenameupload来引用文件。

如果文件不存在,则上传文件,最后清除 $_POST。

但是之后不会处理变量$filenameupload 所以也许它正在保存文件。 你添加行

unset($filenameupload);

在 onFunc() 中的 if() 条件之后并检查它。

如果尚未删除该文件的引用,这将删除该文件的引用,之后您可以删除该文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM