0

我正在使用 EFUMultiple Uploader 在我的网站上接收文件。有谁知道每次上传文件夹中有新文件或一批文件时如何通知我的教程?

4

2 回答 2

0

它会变得烦人,很快,我可以向你保证。

但无论哪种方式,在您的上传脚本中,如果您没有在 PHP 安装中配置 SMTP 服务器,您将需要使用mail()函数或例如PHPMailer库。

于 2012-12-30T03:25:29.127 回答
0

考虑这个(未经测试的)脚本:

#!/usr/bin/env php
<?php
// Warning: this script and UPLOADED_FILES_DB, for security reasons, should not be in UPLOAD_PATH.
define('UPLOAD_PATH', '...');
define('UPLOADED_FILES_DB', 'uploaded_files');

define('MAIL_TO', 'you@example.com');
define('MAIL_FROM', 'cron@example.com');
define('MAIL_SUBJECT', 'Uploaded files');

// Get old files:
if (file_exists(UPLOADED_FILES_DB)) {
    $old_files = unserialize(file_get_contents(UPLOADED_FILES_DB));
} else {
    $old_files = array();
}

// Get current files:
$current_files = array();
foreach (new DirectoryIterator(UPLOAD_PATH) as $file_info) {
    if (!$file_info->isDot()) {
        $current_files[$file_info->getFilename()] = filemtime($file_info->getFilename());
    }
}

// Update database:
file_put_contents(serialize($current_files), UPLOADED_FILES_DB);

// Compute differences:
$added_files = array_diff(array_keys($old_files), array_keys($current_files));
$removed_files = array_diff(array_keys($current_files), array_keys($old_files));
$changed_files = array_diff_assoc($old_files, $current_files);

// Send message:
$headers = 'From: ' . MAIL_FROM . "\r\n";
$message = 'Added files: ' . implode(', ', $added_files);
mail($to, $subject, $message, $headers);

然后,您可以将该脚本放在一个 cron 作业中以每天左右执行,或者您可以include将它放在您上传代码所在的任何位置——不过,后一种方法会很快变得烦人。

于 2012-12-30T03:59:43.980 回答