如何在上传文件时得到通知?
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 结果,制作与之对应的文件夹,并将这些列表生成到原始表单内的下拉菜单中。
简历:
- 用户将拥有自己的文件夹
- 每个用户都可以上传到
任何人的文件夹,当他上传到任何人的文件夹时,它会
发送消息
我正在构建一个 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 结果,制作与之对应的文件夹,并将这些列表生成到原始表单内的下拉菜单中。
简历:
- 用户将拥有自己的文件夹
- 每个用户都可以上传到 任何人的文件夹,当他上传到任何人的文件夹时,它会 发送消息