Foros del Web » Programando para Internet » PHP »

Enviar archivo adjunto desde formulario

Estas en el tema de Enviar archivo adjunto desde formulario en el foro de PHP en Foros del Web. amigos... tengo un codigo que consegui por la red que funciona genial... pero tengo muy poo conocimiento de php, y quiero modificar con su ayuda ...
  #1 (permalink)  
Antiguo 22/04/2007, 11:14
 
Fecha de Ingreso: junio-2003
Ubicación: Isla de Margarita
Mensajes: 22
Antigüedad: 20 años, 9 meses
Puntos: 0
Enviar archivo adjunto desde formulario

amigos... tengo un codigo que consegui por la red que funciona genial... pero tengo muy poo conocimiento de php, y quiero modificar con su ayuda una parte... les pongo el codigo y les explico

Código PHP:
<?php 
    
// Para el envío de mails
    
include_once('class.phpmailer.php');
    
// Indica si los datos provienen del formulario
    
$postback = isset($_POST['postback']) ? true false;
    
    if (
$postback) {
        
extract($_POST);
        
$mail = new phpmailer (); # Crea una instancia
        
$mail -> From $from;
        
$mail -> FromName $from#"BuayaCorp"; Puede obtenerse del formulario, por facilidad se hace de esta manera
        
$mail->AddAddress("[email protected]","ASONEF"); 
        
$mail->AddBCC("[email protected]"); 
        
$mail -> Subject $sbj;
        
$mail -> Body $msg;
        
$mail -> IsHTML (true);
        
$archivos '';
        
$msg "Mensaje Enviado";
        
           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";
        }
    }
?>
<head>
<title>Multiple Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body {
    font: small "Trebuchet MS";
}
#disclaimer {
    background-color: #fafafa;
    padding: 1em;
    border: 3px double #ccc;
}
/*************************/
/* Necesario para que se muestre bien los nuevos elementos agregados */
.file {
    display: block;
}
span a {
    margin-left: 1em;
}
/*************************/
input, textarea {
    border:3px double #ccc;
    background-color:#fafafa;
}
</style>
<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>
</head>

<body>
<?php if (isset($msg)) echo $msg;?>
<form name="frm" id="frm" action="" method="post" enctype="multipart/form-data">
    <dl>
      <dt><label for="to" accesskey="1"></label>
        </dt>
        <dt><label for="from" accesskey="2">De</label></dt>
        <dd><input type="text" name="from" id="from" size="60" /></dd>
        
        <dt><label for="sbj" accesskey="3">Asunto</label></dt>
        <dd><input type="text" name="sbj" id="sbj" size="60" /></dd>
        
        <dt><label for="msg" accesskey="4">Mensaje</label></dt>
        <dd><textarea id="msg" name="msg" rows="7" cols="45"></textarea></dd>
        
        <dt><label>Archivos Adjuntos:</label>&nbsp;&nbsp;&nbsp;<a href="#" onClick="addField()" accesskey="5">A&ntilde;adir Archivo</a></dt>
        <dd><div id="files"></div></dd>
        <dd><input type="submit" value="Enviar" id="postback" name="postback" accesskey="6" /></dd>
   </dl>
</form>
</body>
</html>
Al final hay un link creado por Javascript que cada vez que se linkea abre una nueva caja para cargar archivo... osea, da la opcion de cargar cuantos archivos quiera... quiero que esa caja aparezca una vez se carga el formulario y que solo se cargue una, osea quitarle el codigo java y dejarlo directo por php...

Adicional a eso quiero saber como agregarle mas campos (nombre, apellido,edad,direccion, ciudad, etc.) y que cuando lleguen al correo lleguen en el cuerpo del mensaje.

Agradezco su ayuda...

Ej
  #2 (permalink)  
Antiguo 23/04/2007, 10:44
 
Fecha de Ingreso: junio-2003
Ubicación: Isla de Margarita
Mensajes: 22
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Enviar archivo adjunto desde formulario

alguien puede ayudarme???

me urge esto...
  #3 (permalink)  
Antiguo 03/05/2007, 19:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 1
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Enviar archivo adjunto desde formulario

Hola...
Si aun tienes tu problema... confirma para ayudarte y no perder tiempo escribiendo codigo que no vas a usar.
  #4 (permalink)  
Antiguo 03/05/2007, 20:25
 
Fecha de Ingreso: junio-2003
Ubicación: Isla de Margarita
Mensajes: 22
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Enviar archivo adjunto desde formulario

ya agregue los campos... pero me falta modificar el javascript por un campo que siempre se vea de agregar el "file"... si puedes ayudarme...
  #5 (permalink)  
Antiguo 25/06/2007, 14:55
 
Fecha de Ingreso: junio-2007
Mensajes: 1
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Enviar archivo adjunto desde formulario

Es necesario tener el hosting bajo linux???

La verdad que no me funciona.....
  #6 (permalink)  
Antiguo 25/06/2007, 16:39
 
Fecha de Ingreso: junio-2003
Ubicación: Isla de Margarita
Mensajes: 22
Antigüedad: 20 años, 9 meses
Puntos: 0
Re: Enviar archivo adjunto desde formulario

tengo entendido que php (servidor apache) tambien corre en la plataforma de windows, pero en realidad yo lo tengo funcionando en un servidor linux y me funciona de maravilla... saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:51.