Código PHP:
if (isset ($_FILES["archivos"])) { # Si es que se subió algún archivo
$msg .= "<ul>";
foreach ($_FILES["archivos"]["error"] as $key => $error) { # Iterar sobre la colección de archivos
if ($error == UPLOAD_ERR_OK) { // Si no hay error
$tmp_name = $_FILES["archivos"]["tmp_name"][$key];
$name = $_FILES["archivos"]["name"][$key];
$msg .= "<li>$name</li>";
$name = uniqid('bc') . '_' . $name; # Generar un nombre único para el archivo
$mail -> AddAttachment ($tmp_name, $name); # Añade el archivo adjunto
/*
Si se van a guardar los archivos en un directorio, deberían descomentarse
las siguientes líneas, si se van a guardar los nombres
de los archivos en una base de datos, aquí debería realizarse algo...
move_uploaded_file($tmp_name, "ruta/directorio/$name"); # Guardar el archivo en una ubicación, debe tener los permisos necesarios
*/
} #if
} # foreach
$msg .= '</ul>';
} # if
if (!$mail -> Send ()){
$msg = "No se pudo enviar el email";
}
Código Javascript:
Ver original
<script type="text/javascript"> var numero = 0; // Funciones comunes c= function (tag) { // Crea un elemento return document.createElement(tag); } d = function (id) { // Retorna un elemento en base al id return document.getElementById(id); } e = function (evt) { // Retorna el evento return (!evt) ? event : evt; } f = function (evt) { // Retorna el objeto que genera el evento return evt.srcElement ? evt.srcElement : evt.target; } addField = function () { container = d('files'); span = c('SPAN'); span.className = 'file'; span.id = 'file' + (++numero); field = c('INPUT'); field.name = 'archivos[]'; field.type = 'file'; a = c('A'); a.name = span.id; a.href = '#'; a.onclick = removeField; a.innerHTML = 'Quitar'; span.appendChild(field); span.appendChild(a); container.appendChild(span); } removeField = function (evt) { lnk = f(e(evt)); span = d(lnk.name); span.parentNode.removeChild(span); } </script>
Código HTML:
Ver original
Fuente consultada:
http://www.buayacorp.com/archivos/en...-estilo-gmail/