【发布时间】:2018-11-16 19:28:26
【问题描述】:
概述: 我有一个包含 5 个文件上传字段的表单。一个 php 脚本处理数据并发送 2 封电子邮件(一封给管理员,一封确认回执给用户)并将数据附加到服务器上的 .csv 文件中。
问题: 如何将上传文件的 URL 放入可用于填充电子邮件和 .csv 文件的变量中。
一切都很好,除了我需要一个指向电子邮件和 .csv 文件中包含的每个上传文件的链接。经过几天的尝试,我似乎无法弄清楚那部分。
简化的 HTML 表单:
<HTML><head><title>MultiFile Upload and Send Email</title></head><body>
<form method='post' action='php/multiUploadTestProcess.php' multipart='' enctype='multipart/form-data'>
<label for ='exhName'>Exhibitor Name:</label>
<input type='text' name='exhName' multiple class='form-control'><br><br>
Select File 1: <input type='file' name='img[]' multiple class='form-control' size='10'><br><br>
Select File 2: <input type='file' name='img[]' multiple class='form-control' size='10'><br><br>
Select File 3: <input type='file' name='img[]' multiple class='form-control' size='10'><br><br>
Select File 4: <input type='file' name='img[]' multiple class='form-control' size='10'><br><br>
Select File 5: <input type='file' name='img[]' multiple class='form-control' size='10'><br><br>
<input type='submit' value='upload'>
</form>
PHP:注意:我已删除所有验证/清理、删除 .csv 附加文件和第二封电子邮件提交。我假设一旦我们可以获取一封电子邮件的链接,其余部分将几乎相同。
<?php
$exhName = $_POST['exhName'];
$exhNameNoSpace = str_replace(" ","-", $exhName);
$img = $_FILES['img'];
$to = 'DESTINATION-EMAIL@DOMAIN.com';
$subject = 'New File Uploads';
$email = 'ReplyYToEMAIL@DOMAIN.com';
if(!empty($img))
{
/* reArrayFiles changes the array pattern for PHP's $_FILES (see function at end) */
$img_desc = reArrayFiles($img);
print_r($img_desc);
/* RENAME EACH FILE to current date, exhibitor name w/o spaces, and random integer string (ensuring no file overwrites). Then MOVE FILE to uploads */
foreach($img_desc as $val)
{
$newname = date('m-d-Y',time()).'-'.$exhNameNoSpace.'-'.mt_rand().'.jpg';
move_uploaded_file($val['tmp_name'],'../uploads/'.$newname);
/* THIS FOLLOWING LINE WAS MY ATTEMPT AT GETTING A LINK TO EACH UPLOADED FILE BUT IS NOT WORKING. AND THE VARIABLE $newname HERE IS ADDING A NEW RANDOM INT TO THE FILENAME - NOT THE ONE THE FILE WAS SAVED WITH. */
$filePath = '**Full Path To Directory**'.$newname;
}
/* SEND EMAIL TO ADMIN */
$emailText = "=============================================\nYou have a new Market Place Application\n".
"Here are the details:\n=============================================\n\n Exhibitor Name: $exhName \n\n Upload File 1: $filePath \n\n Upload File 2: $filePath \n\n ###";
// All the neccessary headers for the email.
$headers = array('Content-Type: text/plain; charset="UTF-8";',
'From: ' . $email,
'Reply-To: ' . $email,
'Return-Path: ' . $email,
);
$emailText = wordwrap($emailText, 70);
// Send email
mail($to, $subject, $emailText, implode("\n", $headers));
/* END SEND EMAIL TO ADMIN */
}
function reArrayFiles($file)
{
$file_ary = array();
$file_count = count($file['name']);
$file_key = array_keys($file);
for($i=0;$i<$file_count;$i++)
{
foreach($file_key as $val)
{
$file_ary[$i][$val] = $file[$val][$i];
}
}
return $file_ary;
}
?>
非常感谢您的帮助!
【问题讨论】:
标签: php phpmailer multiple-file-upload