[英]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.