Foros del Web » Programando para Internet » PHP »

Formulario que no recoje archivo temporal de fichero adjunto

Estas en el tema de Formulario que no recoje archivo temporal de fichero adjunto en el foro de PHP en Foros del Web. Muy buenas shurmanos. este es el php de envio de un formulario. El problema es que no recoje el archivo que se adjunta en el ...
  #1 (permalink)  
Antiguo 21/05/2012, 10:28
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Formulario que no recoje archivo temporal de fichero adjunto

Muy buenas shurmanos.
este es el php de envio de un formulario.
El problema es que no recoje el archivo que se adjunta en el formulario y no consigo saber el por que.
Me aparece el siguiente error en el alert que le puse
Warning: fopen() [function.fopen]: Filename cannot be empty in /homepages/21/d413773639/htdocs/enviar3.php on line 33

Warning: fread(): supplied argument is not a valid stream resource in /homepages/21/d413773639/htdocs/enviar3.php on line 34

Warning: fclose(): supplied argument is not a valid stream resource in /homepages/21/d413773639/htdocs/enviar3.php on line 36

Warning: fread(): supplied argument is not a valid stream resource in /homepages/21/d413773639/htdocs/enviar3.php on line 37

Warning: Wrong parameter count for filesize() in /homepages/21/d413773639/htdocs/enviar3.php on line 38

Warning: fread(): supplied argument is not a valid stream resource in /homepages/21/d413773639/htdocs/enviar3.php on line 38

Que son las lineas que tengo marcadas en rojo.

<?php
$nombre = $_POST['nombre'];
$servicios = $_POST['servicios'];
$mail = $_POST['mail'];
$telefono = $_POST['telefono'];
$mensaje = $_POST['msg'];
$vAdjunto = $_POST['archivo'];

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";
$sAdjuntos .= "\n\n--Separador-de-mensajes--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$resultado1 = $header.$sAdjuntos;

$mensaje = "Este correo electronico fue enviado por " . $nombre . " \r\n";
$mensaje .= "Realizando una consulta sobre el siguiente servicio : " . $servicios . " \r\n";
$mensaje .= "Su numero de telefono es el: " . $telefono . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['msg'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());
$oFichero = fopen($vAdjunto["tmp_name"], 'r');
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));

$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
$sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
fread($oFichero, filesize());

$sAdjuntos .= chunk_split(base64_encode($sContenido));
$mensaje= $mensaje.$sAdjuntos;

$para = '[email protected]';
$asunto = 'Desde tutora.es';

mail($para, $asunto, utf8_decode($mensaje), $header);
Espero que alguien pueda hecharme un cable
__________________
http://www.paxarindesign.es
  #2 (permalink)  
Antiguo 21/05/2012, 11:38
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

al parecer no se esta recibiendo por el post, asegurate de que en tu formulario tengas agregado enctype="multipart/form-data", a demas cuando se carga el archivo del formulario es pasado a una carpeta tempora y debes de especificar la ruta exacta del archivo ya subido para poder ser ajuntado y enviado.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 21/05/2012, 11:42
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

Cita:
Iniciado por eits Ver Mensaje
al parecer no se esta recibiendo por el post, asegurate de que en tu formulario tengas agregado enctype="multipart/form-data", a demas cuando se carga el archivo del formulario es pasado a una carpeta tempora y debes de especificar la ruta exacta del archivo ya subido para poder ser ajuntado y enviado.
gracias por la respuesta voy a ver si lo soluciono.
__________________
http://www.paxarindesign.es
  #4 (permalink)  
Antiguo 21/05/2012, 11:45
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

una cosa mas, cuando me refiero a la ruta exacta eso es en el fopen.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 21/05/2012, 11:50
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

Cita:
Iniciado por eits Ver Mensaje
una cosa mas, cuando me refiero a la ruta exacta eso es en el fopen.

saludos.
Haber yo no estoy muy puesto en esto pero se supone que va a una carpeta temporal del servidor desde la cual se reenvia al email, no?
__________________
http://www.paxarindesign.es
  #6 (permalink)  
Antiguo 21/05/2012, 12:25
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 9 meses
Puntos: 88
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

cuando creas un formulario para eviar un mail y le das la opcion de adjuntos, el formulario lo que hace es pasar al servidor todos los datos, en tu caso por el método post, incluyendo el archivo adjunto, por eso se necesita el enctype, el archivo es enviado a una carpeta de temporales, posteriormente puedes mover al archivo a donde desees en el servidor o dejarlo allí, al usar una función que envie el correo le tienes que indicar que hay un archivo adjunto y que este se encuertra en una ruta específica (la carpeta temporal o donde lo moviste), para que puede agregarlo y enviarlo en el mensaje.
espero que mi explicación te sirva ya que casi no tengo tiempo, para redactarlo mejor, es que estoy en el trabajo jejeje
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #7 (permalink)  
Antiguo 21/05/2012, 14:18
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 2 meses
Puntos: 6
Respuesta: Formulario que no recoje archivo temporal de fichero adjunto

Cita:
Iniciado por eits Ver Mensaje
cuando creas un formulario para eviar un mail y le das la opcion de adjuntos, el formulario lo que hace es pasar al servidor todos los datos, en tu caso por el método post, incluyendo el archivo adjunto, por eso se necesita el enctype, el archivo es enviado a una carpeta de temporales, posteriormente puedes mover al archivo a donde desees en el servidor o dejarlo allí, al usar una función que envie el correo le tienes que indicar que hay un archivo adjunto y que este se encuertra en una ruta específica (la carpeta temporal o donde lo moviste), para que puede agregarlo y enviarlo en el mensaje.
espero que mi explicación te sirva ya que casi no tengo tiempo, para redactarlo mejor, es que estoy en el trabajo jejeje
Mañana investigare un poco más ya por hoy estoy más que saturado con este formulario que se esta volviendo una pesadilla (por que el php no lo mio y mira que me palico pero me supera,jjj)
Muchas gracias de todas formas.
__________________
http://www.paxarindesign.es

Etiquetas: fichero, formulario, temporal, adjuntos
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 02:15.