如何在上传文件时得到通知?

How to get notified when a file is uploaded?

我正在构建一个 php 应用程序。这是一个用户可以交换文件的平台。

我首先让用户使用 php 将文件上传到本地服务器上的指定目录,现在我想知道如何在上传新文件时通知每个人到他们的目录。

这是我为此使用的简单表格和 php 代码

<?php 
    if(isset($_POST['submit'])){
        $name       = $_FILES['file']['name'];  
        $temp_name  = $_FILES['file']['tmp_name'];  
        if(isset($name)){
            if(!empty($name)){      
                $location = 'soumissions/';      
                if(move_uploaded_file($temp_name, $location.$name)){
                    echo 'uploaded';
                }
            }       
        }else {
            echo 'please uploaded';
        }
    }
?>
<html>
<head>
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="file" id="file"><br><br>
        <input type="submit" value="submit" name="submit">
    </form>
</body>
</html>

您的代码仅将所有文件上传到一个文件夹中,但根据您的问题,我假设每个用户都应该有自己的文件夹,并且每个用户也可以将文件上传到其他人的文件夹中。 如果我做对了,那么您的代码应该有以下更改: HTTP:

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file"><br>
<input type="text" name="foldername" id="foldername"><br>
<input type="submit" value="submit" name="submit">
</form>

php:

<?php 
    if(isset($_POST['file'])){
        $name       = $_FILES['file']['name'];  
        $temp_name  = $_FILES['file']['tmp_name'];
        if (isset ($_POST['foldername'])) 
          { $foldername = strip_tags($_POST['foldername']);}
        else
          { $foldername = $_SESSION['user_name']; } /* Make the uploader's folder as default, normally are sessions used to login, so I used it in my example */
        if(isset($name)){
            if(!empty($name)){      
                $location = 'soumissions/' . $foldername . '/';      
                if(move_uploaded_file($temp_name, $location.$name)){
                    echo 'uploaded';
                    send_message($foldername); /* Call function to message the folder owner where the file was uploaded */
                }
            }       
        }else {
            echo 'please uploaded';
        }
    }
?>

最后一件事 - 发送消息的功能。最简单的方法是让文件夹以与用户名(或其他存储的用户命名)相同的方式命名,尤其是那些您在会话中也用于登录的文件夹。然后 $foldername = $username ,这对你有很大的帮助。

function send_message ($user)
{ if ( $_SESSION['user_name'] != $user) //to just send messages to other users
  {  /* do whatever you want here, you can send e-mail or anything else. As parameter of recipient, use the name of folder that it was uploaded to, assuming it is named same as some user's credentials, for example usernames*/}
}

同样对于 HTML,您可能应该让用户仅从现有文件夹中进行选择,而不是让他们上传到他们想要的任何文件夹中。所以一些文件夹列表而不是文本输入。 最好的方法是获取所有用户名的 mysql 结果,制作与之对应的文件夹,并将这些列表生成到原始表单内的下拉菜单中。

简历:

  • 用户将拥有自己的文件夹
  • 每个用户都可以上传到 任何人的文件夹,当他上传到任何人的文件夹时,它会 发送消息