Как я могу отправить электронное письмо со списком всех имен файлов из текущей загрузки?

Я реализовал Fine Uploader и у меня все работает правильно. Я даже добавил возможность по электронной почте имя файла при загрузке. Однако, если за один сеанс загружено несколько файлов, он отправит отдельное электронное письмо для всех этих файлов. Есть ли способ отправить одно письмо со всеми именами файлов?

Файл PHP (как я получаю имя файла и отправляю письмо в настоящее время)

require_once "handler.php";


$uploader = new UploadHandler();

$uploader->allowedExtensions = array(); // all files types allowed by default

$uploader->sizeLimit = 10 * 1024 * 1024; // default is 10 MiB

$uploader->inputName = "qqfile"; // matches Fine Uploader's default inputName value by default

$uploader->chunksFolder = "chunks";
$method = $_SERVER["REQUEST_METHOD"];
if ($method == "POST") {
header("Content-Type: text/plain");


if (isset($_GET["done"])) {
$result = $uploader->combineChunks("Digital_Uploads");
}
// Handles upload requests
else {
// Call handleUpload() with the name of the folder, relative to PHP's getcwd()
$result = $uploader->handleUpload("Digital_Uploads");

// To return a name used for uploaded file you can use the following line.
$result["uploadName"] = $uploader->getUploadName();

}
echo json_encode($result);
}

$to      = '[email protected]';  // give to email address
$subject = 'New Photo Submitted';   //change subject of email
$from    = '[email protected]';      // give from email address
$message = '<html><body><h1>A file has been uploaded for scheduling</h1><br>';
$message .= '<h3>'.$result["uploadName"].'</h3></body></html>';
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: ". $from . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
if(mail($to, $subject, $message, $headers));

Uploader Script (использование кнопки для отправки всех файлов, когда пользователь готов)

<script>
var manualUploader = new qq.FineUploader({
element: document.getElementById('fine-uploader-manual-trigger'),
template: 'qq-template-manual-trigger',
request: {
endpoint: '/Digital/endpoint.php'
},
thumbnails: {
placeholders: {
waitingPath: '/placeholders/waiting-generic.png',
notAvailablePath: '/placeholders/not_available-generic.png'
}
},
autoUpload: false,
debug: true


});


qq(document.getElementById("trigger-upload")).attach("click", function() {
manualUploader.uploadStoredFiles();
});
</script>

0

Решение

Похоже, вы установили autoUpload в false, Обычно это означает, что ваши пользователи будут выбирать все файлы для загрузки, а затем нажмите кнопку, чтобы начать процесс загрузки всех выбранных файлов. Таким образом, возможно, вы можете предположить, что после того, как последний файл был успешно отправлен в этом пакете, вы можете продолжить и отправить свою электронную почту.

Две вещи, которые вы должны сделать:

  1. регистр onAllComplete обработчик обратного вызова, и сделайте запрос к вашему серверу, когда Fine Uploader вызовет это событие. На данный момент вы можете предположить, что все файлы в пакете были отправлены на сервер.
  2. Включите некоторую информацию, необходимую для однозначной идентификации пакета файлов. Этот идентификатор может быть отправлен с каждым файлом, позвонив setParams Метод API и включив этот параметр в качестве объекта JavaScript.

Альтернатива # 2 выше — вместо этого включить список всех назначенных Fine Uploader UUID в пакете вместе с вашим onAllComplete запрос. onAllComplete Обработчику события будут переданы два параметра: массив успешно загруженных идентификаторов и массив неудачно загруженных идентификаторов. Затем вы можете получить UUID для каждого файла, используя getUploads Метод API.

1

Другие решения

У вас есть несколько вариантов для достижения того, что вы хотите.

1 — Удалить часть электронной почты из вашего php код и создать массив в javascriptкод для отслеживания имен файлов, а затем, когда все файлы загружены, используйте javascript сделать сообщение или получить запрос со всеми именами файлов в другой php файл, который содержит почтовый код.
Таким образом, вы отправляете только одно письмо, а не кучу из них.


2 — Другой вариант — удалить javascript закодируйте и позвольте php обрабатывать все загрузки, а также создайте массив для отслеживания имен файлов, когда все загрузки будут завершены, отправьте электронное письмо.

1

По вопросам рекламы [email protected]