如何发送包含当前上传的所有文件名列表的电子邮件?
How can I send an email with a list of all filenames from current upload?
我已经实施了 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 = 'xxxxxx@xxxxx.com'; // give to email address
$subject = 'New Photo Submitted'; //change subject of email
$from = 'xxxxxx@xxxxx.com'; // 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));
上传脚本(用户准备好后使用按钮发送所有文件)
<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>
您有几个选择来实现您想要的。
1 - 从您的 php
代码中删除电子邮件部分,并在 javascript
代码中创建一个数组来跟踪文件名,然后,当所有文件都上传后,使用 javascript
发出 post 或获取包含邮件代码的不同 php
文件的所有文件名的请求。
这样,您只发送一封电子邮件,而不是一堆。
2 - 另一种选择是删除 javascript
代码并让 php 处理所有上传,同时创建一个数组来跟踪文件名,当所有上传完成时,发送电子邮件。
您似乎已将 autoUpload
设置为 false
。这通常意味着您的用户将 select 所有要上传的文件,然后单击按钮开始所有 selected 文件的上传过程。因此,也许您可以假设,一旦该批次中的最后一个文件已成功发送,您就可以继续发送电子邮件了。
你应该做的两件事:
- 注册an
onAllComplete
callback handler,当Fine Uploader触发此事件时,向您的服务器发出请求。至此,您可以假设批次中的所有文件都已发送到服务器。
- 包括一些唯一标识该批文件所需的信息。此标识符可以通过调用 the
setParams
API method 并将此参数作为 JavaScript 对象包含在每个文件中。
上述#2 的替代方法是在 onAllComplete
请求的批次中包含所有 Fine Uploader 分配的 UUID 的列表。 onAllComplete
事件处理程序将传递两个参数:一组成功上传的 ID 和一组上传失败的 ID。然后,您可以使用 the getUploads
API method.
获取每个文件的 UUID
我已经实施了 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 = 'xxxxxx@xxxxx.com'; // give to email address
$subject = 'New Photo Submitted'; //change subject of email
$from = 'xxxxxx@xxxxx.com'; // 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));
上传脚本(用户准备好后使用按钮发送所有文件)
<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>
您有几个选择来实现您想要的。
1 - 从您的 php
代码中删除电子邮件部分,并在 javascript
代码中创建一个数组来跟踪文件名,然后,当所有文件都上传后,使用 javascript
发出 post 或获取包含邮件代码的不同 php
文件的所有文件名的请求。
这样,您只发送一封电子邮件,而不是一堆。
2 - 另一种选择是删除 javascript
代码并让 php 处理所有上传,同时创建一个数组来跟踪文件名,当所有上传完成时,发送电子邮件。
您似乎已将 autoUpload
设置为 false
。这通常意味着您的用户将 select 所有要上传的文件,然后单击按钮开始所有 selected 文件的上传过程。因此,也许您可以假设,一旦该批次中的最后一个文件已成功发送,您就可以继续发送电子邮件了。
你应该做的两件事:
- 注册an
onAllComplete
callback handler,当Fine Uploader触发此事件时,向您的服务器发出请求。至此,您可以假设批次中的所有文件都已发送到服务器。 - 包括一些唯一标识该批文件所需的信息。此标识符可以通过调用 the
setParams
API method 并将此参数作为 JavaScript 对象包含在每个文件中。
上述#2 的替代方法是在 onAllComplete
请求的批次中包含所有 Fine Uploader 分配的 UUID 的列表。 onAllComplete
事件处理程序将传递两个参数:一组成功上传的 ID 和一组上传失败的 ID。然后,您可以使用 the getUploads
API method.