Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario web con archivo adjunto

Estas en el tema de Formulario web con archivo adjunto en el foro de PHP en Foros del Web. Estuve buscando por la web como enviar archivos adjuntos en un formulario web, pero en la mayoría eran formularios mas complejos. En este caso, simplemente ...
  #1 (permalink)  
Antiguo 10/11/2014, 12:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Exclamación Formulario web con archivo adjunto

Estuve buscando por la web como enviar archivos adjuntos en un formulario web, pero en la mayoría eran formularios mas complejos.
En este caso, simplemente tengo un formulario asi:

Código HTML:
Ver original
  1. <form action="php/enviarcv.php" method="post" enctype="multipart/form-data">
  2.     <label for="cv">
  3.         <input type="file" name="cv" required />
  4.     </label>
  5.     <label for="enviar">
  6.         <input type="submit" name="enviar" id="btn" value="Enviar" />
  7.     </label>
  8. </form>

Me gustaría saber como tendría que ser el código php, para poner que solamente se puedan enviar .doc y .pdf, limitar el tamaño del archivo.

El cuerpo del mensaje y el asunto los voy a definir adentro del php... por lo que del formulario de contacto lo único que se toma es lo único que hay para introducir, el archivo.
  #2 (permalink)  
Antiguo 10/11/2014, 12:29
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Hola lucastosellolatini

Código PHP:
Ver original
  1. // Tomas la informacion del archivo subido.
  2. $partes_ruta = pathinfo($_FILES["file"]["name"]);
  3.  
  4. // obtenemos el tamaño del archivo subido
  5. $fsize = $_FILES["file"]["size"];
  6.  
  7. if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1501 ) {
  8.  
  9.      // Subimos el archivo
  10.  
  11. }else {
  12.  
  13.     // Mostramos un mensaje indicando que la extención no es la correcta.
  14.  
  15. }

Espero te sirva.

Saludos.
__________________
http://www.sp-vision.net
  #3 (permalink)  
Antiguo 10/11/2014, 13:03
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Mauritosuarez, lo que yo quiero es enviarlo por email... a una casilla de correo electronico. Eso es para subirlo al servidor simplemente no?
  #4 (permalink)  
Antiguo 10/11/2014, 13:06
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Te sirve para subirlo o para enviarlo por mail como tu prefieras.

Agregue el comentario "// Subimos el archivo" de ejemplo aquí puedes utilizar la funcion de enviar mail.

Saludos.
__________________
http://www.sp-vision.net
  #5 (permalink)  
Antiguo 10/11/2014, 13:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Y tambien tendria que agregarle las cabeceras y todo eso no?
  #6 (permalink)  
Antiguo 10/11/2014, 13:27
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Claro, el código solo valida las extenciones que necesitas (doc, pdf, etc) y el tamaño que necesitas. Si se cumplen las restricciones generas los datos para el envio del mail.

Cabeceras, subject etc.

Saludos.
__________________
http://www.sp-vision.net
  #7 (permalink)  
Antiguo 10/11/2014, 13:49
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Código PHP:
Ver original
  1. <?
  2.     $asunto = "Ha llegado un CV";
  3.  
  4.     $header = 'From: ' . $mail . " \r\n";
  5.     $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  6.     $header .= "Mime-Version: 1.0 \r\n";
  7.     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
  8.     $header .= "This is a multi-part message in MIME format.\r\n";
  9.     $header .= "--".$uid."\r\n";
  10.     $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
  11.     $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
  12.     $header .= $message."\r\n\r\n";
  13.     $header .= "--".$uid."\r\n";
  14.     $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
  15.     $header .= "Content-Transfer-Encoding: base64\r\n";
  16.     $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
  17.     $header .= $content."\r\n\r\n";
  18.     $header .= "--".$uid."--";
  19.  
  20.     $mensaje = "Alguien envió un curriculum vitae " . " \r\n";
  21.     $mensaje .= "Enviado el " . date('d/m/Y', time());
  22.  
  23.     $para = '[email protected]';
  24.  
  25.     // Tomas la informacion del archivo subido.
  26.     $partes_ruta = pathinfo($_FILES["file"]["name"]);
  27.      
  28.     // obtenemos el tamaño del archivo subido
  29.     $fsize = $_FILES["file"]["size"];
  30.      
  31.     if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1501 )
  32.     {
  33.  
  34.         ini_set(sendmail_from, '[email protected]');
  35.         mail($para, $asunto, utf8_decode($mensaje), $header);
  36.  
  37.         echo header("Location: http://www.web.com.ar/contactok.php");
  38.  
  39.     }else {
  40.  
  41.     echo "ERROR";
  42.  
  43. }

Disculpa que siga molestando.... hice el codigo asi y siempre me lleva al else y aparece error.... me podrias decir donde me estoy equivocando?
  #8 (permalink)  
Antiguo 10/11/2014, 13:56
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Si estas utilizando este código como formulario

Código HTML:
Ver original
  1. <form action="php/enviarcv.php" method="post" enctype="multipart/form-data">
  2.     <label for="cv">
  3.         <input type="file" name="cv" required />
  4.     </label>
  5.     <label for="enviar">
  6.         <input type="submit" name="enviar" id="btn" value="Enviar" />
  7.     </label>
  8. </form>

Fijate que en tu input de tipo "file" su name es "cv" y en el código que yo te pase se llama diferente.

Tendrias que cambiar donde dice $_FILES["file"] por $_FILES["cv"]

Esto
Código PHP:
Ver original
  1. // Tomas la informacion del archivo subido.
  2.     $partes_ruta = pathinfo($_FILES["file"]["name"]);
  3.      
  4.     // obtenemos el tamaño del archivo subido
  5.     $fsize = $_FILES["file"]["size"];

Cambiar por esto

Código PHP:
Ver original
  1. // Tomas la informacion del archivo subido.
  2.     $partes_ruta = pathinfo($_FILES["cv"]["name"]);
  3.      
  4.     // obtenemos el tamaño del archivo subido
  5.     $fsize = $_FILES["cv"]["size"];

Saludos.
__________________
http://www.sp-vision.net

Última edición por mauritosuarez; 10/11/2014 a las 14:05
  #9 (permalink)  
Antiguo 10/11/2014, 14:09
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Lo corregi y sigue marcando error. Yo no se si estaran bien hechas las cabeceras y eso ya que nunca lo habia hecho.
  #10 (permalink)  
Antiguo 10/11/2014, 14:18
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

prueba así.

Te comento, modifique el tamaño del archivo a subir porque el número que estaba antes era solo de prueba, y si subis un archivo es posible que el archivo se mayor. Lo probe y me esta funcionando.
PD: Prueba cambiando el valor del $fsize por uno más grande si necesitas, dependiendo de lo que pese el archivo a subir.

Código PHP:
Ver original
  1. <?php
  2.     $asunto = "Ha llegado un CV";
  3.  
  4.     $header = 'From: ' . $mail . " \r\n";
  5.     $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  6.     $header .= "Mime-Version: 1.0 \r\n";
  7.     $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
  8.     $header .= "This is a multi-part message in MIME format.\r\n";
  9.     $header .= "--".$uid."\r\n";
  10.     $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
  11.     $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
  12.     $header .= $message."\r\n\r\n";
  13.     $header .= "--".$uid."\r\n";
  14.     $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
  15.     $header .= "Content-Transfer-Encoding: base64\r\n";
  16.     $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
  17.     $header .= $content."\r\n\r\n";
  18.     $header .= "--".$uid."--";
  19.  
  20.     $mensaje = "Alguien envió un curriculum vitae " . " \r\n";
  21.     $mensaje .= "Enviado el " . date('d/m/Y', time());
  22.  
  23.     $para = '[email protected]';
  24.  
  25.    
  26.  
  27.     // Tomas la informacion del archivo subido.
  28.     $partes_ruta = pathinfo($_FILES["cv"]["name"]);
  29.    
  30.     // obtenemos el tamaño del archivo subido
  31.     $fsize = $_FILES["cv"]["size"];
  32.  
  33.     if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1516165165 )
  34.     {
  35.  
  36.         ini_set(sendmail_from, '[email protected]');
  37.         mail($para, $asunto, utf8_decode($mensaje), $header);
  38.  
  39.         echo header("Location: http://www.web.com.ar/contactok.php");
  40.  
  41.     }else {
  42.  
  43.     echo "ERROR";
  44.  
  45. }
  46.  
  47. ?>
__________________
http://www.sp-vision.net
  #11 (permalink)  
Antiguo 10/11/2014, 15:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Poniendo el ultimo codigo el mensaje llega :D eso es un avance! pero no llega ni el cuerpo del mensaje, que tendria que decir:

Alguien envió un curriculum vitae
Enviado el: 00/00/00

ni el archivo adjunto...

Cuando lo probaste a vos eso te llegaba bien?
  #12 (permalink)  
Antiguo 11/11/2014, 05:11
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Lo probe en mi pc o sea con xampp pero en mi pc no tengo configurado un servidor de mail por tal motivo no se envía el mail, para probarlo tendrás que subirlo a un servidor.

Saludos.
__________________
http://www.sp-vision.net
  #13 (permalink)  
Antiguo 11/11/2014, 05:42
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Si si, lo tengo subido a un servidor... el email llega pero no se ve el contenido y como archivo adjunto llega un archivo con el nombre Array y pesa 1kb...
  #14 (permalink)  
Antiguo 11/11/2014, 05:54
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

proba con este código y verifica que el mail llegue bien, si llega bien con el subject el mensaje después le adjuntamos el archivo.
Yo lo utilizo así en mi web para enviar mail, solo que no adjunto archivo.

Código PHP:
Ver original
  1. <?php
  2.  
  3. // Tomas la informacion del archivo subido.
  4. $partes_ruta = pathinfo($_FILES["cv"]["name"]);
  5.  
  6. // obtenemos el tamaño del archivo subido
  7. $fsize = $_FILES["cv"]["size"];
  8.  
  9. if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1516165165 )
  10. {
  11.     $subject  = "Alguien envió un curriculum vitae " . " \r\n";
  12.     $subject .= "Enviado el " . date('d/m/Y H:i:s');
  13.     $to = "[email protected]";
  14.     $from = "[email protected]";
  15.  
  16.     //data
  17.     $msg = "Nombre: Usuario <br>\n";
  18.     $msg .= "Email: [email protected] <br>\n";
  19.     $msg .= "Mensaje: Este es un mensaje de prueba  <br><br>\n";
  20.  
  21.     //Headers
  22.     $headers  = "MIME-Version: 1.0\r\n";
  23.     $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  24.     $headers .= "From: <".$from. ">" ;
  25.  
  26.  
  27.     //send for each mail
  28.     foreach($to as $mail){
  29.        mail($mail, utf8_decode($subject), utf8_decode($msg), $headers);
  30.        echo $mail;
  31.     }
  32.  
  33.  
  34.     //ini_set(sendmail_from, '[email protected]');
  35.     //mail($para, $asunto, utf8_decode($mensaje), $header);
  36.  
  37.     echo header("Location: http://www.web.com.ar/contactok.php");
  38.  
  39. }else {
  40.  
  41.     echo "ERROR";
  42. }
  43. ?>
__________________
http://www.sp-vision.net
  #15 (permalink)  
Antiguo 11/11/2014, 06:08
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

No, lo probe y salvo que yo este haciendo algo mal, no llego...

yo para enviar email sin adjuntar archivos uso este codigo php y llegan perfectos:

Código PHP:
<?
$nombre 
$_POST['nombre'];
$mail $_POST['mail'];
$asunto $_POST['asunto'];
$contenido $_POST['mensaje'];
$fecha date('d/m/Y'time());

$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/html";

$mensaje="
    <strong>Este mensaje fue enviado por:</strong> $nombre <br /><br />
    <strong>Su e-mail es:</strong> $mail <br /><br />
    <strong>Mensaje:</strong> $contenido<br /><br />
    <strong>Enviado el:</strong> $fecha
"
;

$para '[email protected]';

ini_set(sendmail_from'[email protected]');
mail($para$asuntoutf8_decode($mensaje), $header);

echo 
header("Location: http://www.dominio.com.ar/contactok.php");

?>
  #16 (permalink)  
Antiguo 11/11/2014, 07:18
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Hola amigo perdón por la demora, estuve realizando unas modificaciones al script y me a funcionado de maravilla. Te paso el código, solo tienes que modificar el mail de la web y un mail de prueba para que te llegue a tí.

index.php
Código HTML:
Ver original
  1. <form accept-charset="utf-8" action="enviar.php" class="trabaja" enctype="multipart/form-data" id="formulario" method="post">
  2.  
  3. <input type="text" id="nombre" name="nombre" value="Nombre" />
  4. <input type="text" id="apellido" name="apellido" value="Apellidos" />
  5. <input type="text" id="email" name="email" value="e-mail" />
  6. <input type="text" id="telefono" name="telefono" value="Telefono" />
  7. <input type="file" id="filead" name="filead" />
  8. <input type="checkbox" id="condiciones" name="condiciones" />
  9. <input type="submit" value="Enviar Formulario" />
  10.  
  11. </form>

enviar.php
Código PHP:
Ver original
  1. <?php
  2. if ($_POST){
  3.    
  4. // Tomas la informacion del archivo subido.
  5. $partes_ruta = pathinfo($_FILES["filead"]["name"]);
  6.  
  7. // obtenemos el tamaño del archivo subido
  8. $fsize = $_FILES["filead"]["size"];
  9.  
  10. if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1516165165 )
  11. {
  12.  
  13.     $num = md5(time());
  14.  
  15.     //MAIL BODY
  16.     $body = "
  17.    <html>
  18.    <head>
  19.    <title>Formulario Trabaja con nosotros</title>
  20.    </head>
  21.    <body style='background:#EEE; padding:30px;'>
  22.    <h2 style='color:#767676;'>Trabaja con nosotros</h2>";
  23.  
  24.     $body .= "
  25.    <strong style='color:#0090C6;'>Nombre: </strong>
  26.    <span style='color:#767676;'>" . $_POST["nombre"] . "</span>";
  27.  
  28.     $body .= "
  29.    <strong style='color:#0090C6;'>Apellidos: </strong>
  30.    <span style='color:#767676;'>" . $_POST["apellido"] . "</span>";
  31.  
  32.     $body .= "
  33.    <strong style='color:#0090C6;'>Email: </strong>
  34.    <span style='color:#767676;'>" . $_POST["email"] . "</span>";
  35.  
  36.     $body .= "
  37.    <strong style='color:#0090C6;'>Teléfono: </strong>
  38.    <span style='color:#767676;'>" . $_POST["telefono"] . "</span>";
  39.  
  40.     $body .= "</body></html>";
  41.  
  42.     $_name=$_FILES["filead"]["name"];
  43.     $_type=$_FILES["filead"]["type"];
  44.     $_size=$_FILES["filead"]["size"];
  45.     $_temp=$_FILES["filead"]["tmp_name"];
  46.  
  47.     if( strcmp($_name, "") ) //FILES EXISTS
  48.     {
  49.     $fp = fopen($_temp, "rb");
  50.     $file = fread($fp, $_size);
  51.     $file = chunk_split(base64_encode($file));
  52.  
  53.     // MULTI-HEADERS Content-Type: multipart/mixed and Boundary is mandatory.
  54.     $headers = "From: GME <[email protected]>\r\n"; // Modifica el mail de la web
  55.     $headers .= "MIME-Version: 1.0\r\n";
  56.     $headers .= "Content-Type: multipart/mixed; ";
  57.     $headers .= "boundary=".$num."\r\n";
  58.     $headers .= "--".$num."\n";
  59.  
  60.     // HTML HEADERS
  61.     $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  62.     $headers .= "Content-Transfer-Encoding: 8bit\r\n";
  63.     $headers .= "".$body."\n";
  64.     $headers .= "--".$num."\n";
  65.  
  66.     // FILES HEADERS
  67.     $headers .= "Content-Type:application/octet-stream ";
  68.     $headers .= "name=\"".$_name."\r\n";
  69.     $headers .= "Content-Transfer-Encoding: base64\r\n";
  70.     $headers .= "Content-Disposition: attachment; ";
  71.     $headers .= "filename=\"".$_name."\r\n\n";
  72.     $headers .= "".$file."\r\n";
  73.     $headers .= "--".$num."--";
  74.  
  75.     }else { //FILES NO EXISTS
  76.  
  77.     // HTML HEADERS
  78.     $headers = "From: GME \r\n";
  79.     $headers .= "MIME-Version: 1.0\r\n";
  80.     $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  81.     $headers .= "Content-Transfer-Encoding: 8bit\r\n";
  82.     }
  83.  
  84.  
  85.     // SEND MAIL
  86.     mail("[email protected]", "WEB - Trabaja con nosotros" , $body, $headers); // --> Aqui se espesificaran los usuarios.
  87.     //mail("[email protected]", "WEB - Trabaja con nosotros" , "hola", "cabecera");
  88.  
  89.     echo "<div class='ok'>
  90.    <strong>El formulario se ha enviado correctamente.</strong></div>";
  91. } else {
  92.     print "El tipo de documento no es correcto, recuerde solo se permitern .doc - .docx - .pdf"; exit;
  93. }
  94. /*
  95. print $headers; echo "<br>";
  96. print "------------------------------------------------------ <br>";
  97. print $body; exit;*/
  98. }
  99. ?>
__________________
http://www.sp-vision.net

Última edición por mauritosuarez; 11/11/2014 a las 07:24
  #17 (permalink)  
Antiguo 11/11/2014, 07:51
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Probe el codigo de muchas formas... y lo que me pasa es que despues de apretar enviar queda diciendo, esperando www.dominio.com y ahi queda... no pasa mas nada. y el email no llega.

muchas gracias por todo lo que me estas ayudando! no hay problema con la demora!
  #18 (permalink)  
Antiguo 11/11/2014, 08:02
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Que raro, a mi me funciono de 10!

Modificaste estas secciones.?

Linea 54.

$headers = "From: GME <[email protected]>\r\n"; // Modifica el mail de la web

Linea 86.

mail("[email protected]", "WEB - Trabaja con nosotros" , $body, $headers); // --> Aqui se espesificaran los usuarios.

Verificaste que el tamaño del archivo que estas enviando no sea mayor al filtro que le pusimos ?

Size = 1516165165

Tiene que funcionar, es más llega el mail con un lindo formato y con los datos adjuntos.

Saludos.
__________________
http://www.sp-vision.net
  #19 (permalink)  
Antiguo 11/11/2014, 08:16
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Si si, modifique todo.... el archivo pesa 400 kb
  #20 (permalink)  
Antiguo 11/11/2014, 08:20
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Me decís que la web se queda esperando al dominio?

Revisaste en correos no deseados spam...

Ya no se que podría ser...

Disculpa que te moleste podrías pegar como te quedo el código tuyo.?

Gracias.
__________________
http://www.sp-vision.net
  #21 (permalink)  
Antiguo 11/11/2014, 08:25
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Si si, aparece como que carga el archivo, como que lo sube... y desp dice: esperando www.dominio.com.ar

mi codigo es el mismo que el tuyo, hasta copie el formulario para probar y me hace lo mismo. Probe con una cuenta del hosting y con otra de gmail y pasa lo mismo en las dos.


Código PHP:
Ver original
  1. <?php
  2. if ($_POST){
  3.    
  4. // Tomas la informacion del archivo subido.
  5. $partes_ruta = pathinfo($_FILES["filead"]["name"]);
  6.  
  7. // obtenemos el tamaño del archivo subido
  8. $fsize = $_FILES["filead"]["size"];
  9.  
  10. if($partes_ruta['extension'] == "doc" or $partes_ruta['extension'] == "docx" or $partes_ruta['extension'] == "pdf" and $fsize <= 1516165165 )
  11. {
  12.  
  13.     $num = md5(time());
  14.  
  15.     //MAIL BODY
  16.     $body = "
  17.    <html>
  18.    <head>
  19.    <title>Formulario Trabaja con nosotros</title>
  20.    </head>
  21.    <body style='background:#EEE; padding:30px;'>
  22.    <h2 style='color:#767676;'>Trabaja con nosotros</h2>";
  23.  
  24.     $body .= "
  25.    <strong style='color:#0090C6;'>Nombre: </strong>
  26.    <span style='color:#767676;'>" . $_POST["nombre"] . "</span>";
  27.  
  28.     $body .= "
  29.    <strong style='color:#0090C6;'>Apellidos: </strong>
  30.    <span style='color:#767676;'>" . $_POST["apellido"] . "</span>";
  31.  
  32.     $body .= "
  33.    <strong style='color:#0090C6;'>Email: </strong>
  34.    <span style='color:#767676;'>" . $_POST["email"] . "</span>";
  35.  
  36.     $body .= "
  37.    <strong style='color:#0090C6;'>Teléfono: </strong>
  38.    <span style='color:#767676;'>" . $_POST["telefono"] . "</span>";
  39.  
  40.     $body .= "</body></html>";
  41.  
  42.     $_name=$_FILES["filead"]["name"];
  43.     $_type=$_FILES["filead"]["type"];
  44.     $_size=$_FILES["filead"]["size"];
  45.     $_temp=$_FILES["filead"]["tmp_name"];
  46.  
  47.     if( strcmp($_name, "") ) //FILES EXISTS
  48.     {
  49.     $fp = fopen($_temp, "rb");
  50.     $file = fread($fp, $_size);
  51.     $file = chunk_split(base64_encode($file));
  52.  
  53.     // MULTI-HEADERS Content-Type: multipart/mixed and Boundary is mandatory.
  54.     $headers = "From: GME <[email protected]>\r\n"; // Modifica el mail de la web
  55.     $headers .= "MIME-Version: 1.0\r\n";
  56.     $headers .= "Content-Type: multipart/mixed; ";
  57.     $headers .= "boundary=".$num."\r\n";
  58.     $headers .= "--".$num."\n";
  59.  
  60.     // HTML HEADERS
  61.     $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  62.     $headers .= "Content-Transfer-Encoding: 8bit\r\n";
  63.     $headers .= "".$body."\n";
  64.     $headers .= "--".$num."\n";
  65.  
  66.     // FILES HEADERS
  67.     $headers .= "Content-Type:application/octet-stream ";
  68.     $headers .= "name=\"".$_name."\r\n";
  69.     $headers .= "Content-Transfer-Encoding: base64\r\n";
  70.     $headers .= "Content-Disposition: attachment; ";
  71.     $headers .= "filename=\"".$_name."\r\n\n";
  72.     $headers .= "".$file."\r\n";
  73.     $headers .= "--".$num."--";
  74.  
  75.     }else { //FILES NO EXISTS
  76.  
  77.     // HTML HEADERS
  78.     $headers = "From: GME \r\n";
  79.     $headers .= "MIME-Version: 1.0\r\n";
  80.     $headers .= "Content-Type: text/html; charset=UTF-8\r\n";
  81.     $headers .= "Content-Transfer-Encoding: 8bit\r\n";
  82.     }
  83.  
  84.     // SEND MAIL
  85.     mail("test@dominio", "WEB - Trabaja con nosotros" , $body, $headers); // --> Aqui se espesificaran los usuarios.
  86.     //mail("[email protected]", "WEB - Trabaja con nosotros" , "hola", "cabecera");
  87.  
  88.     echo "<div class='ok'>
  89.    <strong>El formulario se ha enviado correctamente.</strong></div>";
  90. } else {
  91.     print "El tipo de documento no es correcto, recuerde solo se permitern .doc - .docx - .pdf"; exit;
  92. }
  93. /*
  94. print $headers; echo "<br>";
  95. print "------------------------------------------------------ <br>";
  96. print $body; exit;*/
  97. }
  98. ?>


El email no llega ni a spam, porque es como que no va nunca ni al else que tira error ni a el if que confirma el envio... queda cargando la pagina sin irse de donde esta el formulario.


Te invito a que pruebes: http://wi141613.ferozo.com/test.html
  #22 (permalink)  
Antiguo 11/11/2014, 08:29
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Proba descomentar estas lineas de código.


print $headers; echo "<br>";
print "------------------------------------------------------ <br>";
print $body; exit;


esto te tendría que mostrar como quedaría el mail, y también te tiene que mostrar la codificación del archivo en base64.

Con esto nos aseguramos que este transformando el archivo a base64.

ejemplo del código a mostrar.

El formulario se ha enviado correctamente.
From: GME MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=d38e7bb3f58a63dd2faa86caa63aadd7 --d38e7bb3f58a63dd2faa86caa63aadd7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit
Trabaja con nosotros

Nombre: mauro Apellidos: suarez Email: [email protected] Teléfono: 6516132132 --d38e7bb3f58a63dd2faa86caa63aadd7 Content-Type:application/octet-stream name="Recarga Movistar_8605.pdf Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Recarga Movistar_8605.pdf JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9UeXBlL1hPYmplY3 QvQ29sb3JTcGFjZS9EZXZpY2VH cmF5L1N1YnR5cGUvSW1hZ2UvQml0c1BlckNvbXBvbmVudCA4L1 dpZHRoIDI4Ny9MZW5ndGggMTUz My9IZWlnaHQgNTgvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW 0KeJztWWuV5SgQjoRIQAISkBAJ SIgEHEQCEiIBCZGABCRkQ70ocu+cuZ2zfbZnlu9PJ1zqwUdRVa GnaWBgYGBgYGBgYGBgYGBg4E+C
__________________
http://www.sp-vision.net
  #23 (permalink)  
Antiguo 11/11/2014, 08:35
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Cita:
El email no llega ni a spam, porque es como que no va nunca ni al else que tira error ni a el if que confirma el envio... queda cargando la pagina sin irse de donde esta el formulario.


Te invito a que pruebes: http://wi141613.ferozo.com/test.html

Hice la prueba con la dir que me pasaste y me funciono. Me aparecio el mensaje.

"El formulario se ha enviado correctamente."
__________________
http://www.sp-vision.net
  #24 (permalink)  
Antiguo 11/11/2014, 08:40
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

mira, a vos te funciono... el email llego! y dice que pesa 20kb.... el tema es que no aparece ni el contenido ni el archivo adjunto..... no se que le pasara a esto :S
  #25 (permalink)  
Antiguo 11/11/2014, 08:41
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Si tenes Skype agregame.

[email protected]

Saludos.
__________________
http://www.sp-vision.net
  #26 (permalink)  
Antiguo 11/11/2014, 10:27
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Formulario web con archivo adjunto

Hola lucastosellolatini, pudiste enviar el mail con datos adjuntos?
__________________
http://www.sp-vision.net
  #27 (permalink)  
Antiguo 11/11/2014, 14:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 31
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Formulario web con archivo adjunto

Hola maurito, te agregue a skype! seguimos por ahi! abrazo

Etiquetas: formulario
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:55.