Foros del Web » Creando para Internet » HTML »

Formulario adjuntar archivos de word

Estas en el tema de Formulario adjuntar archivos de word en el foro de HTML en Foros del Web. HOLA A TODOS EL PROBLEMA ES QUE NO ME SIRVE ADJUNTAR ACHIVOS .DOC Y .DOCX. ME SIRVE ADJUNTAR PDF,JPG PERO NO LOS LOS QUE EN ...
  #1 (permalink)  
Antiguo 08/07/2011, 09:18
 
Fecha de Ingreso: junio-2011
Ubicación: San Jose, Costa Rica
Mensajes: 52
Antigüedad: 12 años, 9 meses
Puntos: 1
Pregunta Formulario adjuntar archivos de word

HOLA A TODOS EL PROBLEMA ES QUE NO ME SIRVE ADJUNTAR ACHIVOS .DOC Y .DOCX.
ME SIRVE ADJUNTAR PDF,JPG PERO NO LOS LOS QUE EN REALIDAD OCUPO.


<?php
/*
NOTA:
este archivo debe estar acompañado de una carpeta
con el nombre "archivos" en donde se copiaran los
archivos. Esta carpeta debe tener chmod 777.
*/
//CONFIGURACION
$maximo_tamano= '50000000'; //tamaño maximo de los archivos. 100000 equivale a 100kb.
$direccion_envio= '[email protected]'; //la direccion a la que se enviara el email.
$url= 'http://www.ridesupercompro.com/Pruebas'; //la URL donde esta publicado el formulario. SIN la barra al final

//FIN CONFIGURACION
?>


<?PHP
//proceso del formulario
// si existe "enviar"...
if (isset ($_POST['enviar'])) {

//recogemos las variables
$nombre=$_POST['nombre'];
$email=$_POST['email'];
$comentario=$_POST['comentario'];

//comprobamos si se adjunto un archivo, y si su tamano es menor al permitido
if (isset($_FILES['archivo']['tmp_name'])) {
$tipo=$_FILES['archivo']['type'];
//Formatos de archivo permitidos, si desean agregar mas, agregar un case para cada formato.
switch ($tipo) {

case "application/doc":
$ext="doc";
break;

case "application/docx":
$ext="docx";
break;

case "application/pdf":
$ext="pdf";
break;


default:
$ext="error";
break;

}

$aleatorio = rand();
$nombreoriginal= explode ('.', $_FILES['archivo']['name']);
$tamano=$_FILES['archivo']['size'];
$nuevonombre=$nombreoriginal[0].'-'.$aleatorio.'.'.$ext;
}

if (isset ($nuevonombre)) {
if ($ext=="error") {$error_archivo="<br />- Formato de archivo no permitido.";}
if ($tamano > $maximo_tamano) {$error_archivo="<br />- El tama&ntilde;o de su archivo supera el m&aacute;ximo permitido.";}
}

//comprobamos si todos los campos fueron completados
if ($nombre!='' && $email!='' && $comentario!='' && $error_archivo=='') {

// copiamos el archivo en el servidor
copy($_FILES['archivo']['tmp_name'],'archivos/'.$nuevonombre);

//armamos el html
$contenido = '<html><body>';
$contenido .= '<h2>Contacto desde formulario</h2>';
$contenido .= '<p>Enviado el '. date("d M Y").'</p>';
$contenido .= '<hr />';
$contenido .= '<p>Nombre: <strong>'.$nombre.'</strong>';
$contenido .= '<p>Email: <strong>'.$email.'</strong>';
$contenido .= '<p>Archivo: <strong><a href="'.$url.'/archivos/'.$nuevonombre.'">'.$nuevonombre.'</a> (formato:'.$ext.' - '.$tamano.' bytes)</strong>';
$contenido .= '<p>Comentario: <strong>'.$comentario.'</strong>';
$contenido .= '<hr />';
$contenido .= '</body></html>';

// si todos los campos fueron completados enviamos el mail
mail ($direccion_envio, "Contacto desde el formulario", $contenido, "From: $nombre\nContent-Type: text/html; charset=iso-8859-1\nContent-Transfer-Encoding: 8bit");
$flag='ok';
$mensaje='<div id="ok">Su archivo ha sido cargado con &eacute;xito<br /> Gracias por Contactarnos</div>';
} else {
//si no todos los campos fueron completados se frena el envio y avisamos al usuario
$flag='err';
$mensaje='<div id="error">- Los Campos Marcados Con * Son Requeridos. '.$error_archivo.'</div>';

}
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Contactenos - v2</title>

<style>
body {
font: 1em Lucida Grande, 'Trebuchet MS', verdana, sans-serif;
font-size: 76%;}

#form {
border: 3px double #eaeaea;
background-color: #FFC;
padding: 1em;
width: 30em;
margin: auto;}

#form h2{
font-size: 2em;
margin: 0 0 0.5em 0;
padding: 0;}


#form .campo {
border: 1px solid #999;
padding: 0.3em;
font-size: 1.5em;}

#form .error {
border: 1px solid #F00;
padding: 0.3em;
font-size: 1.5em;}

#form .com {
border: 1px solid #999;
padding: 0.3em;
font-size: 1.5em;
width:18em;
height: 10em;
font: 1.5em Lucida Grande, 'Trebuchet MS', verdana, sans-serif;}

#form .com-error {
border: 1px solid #F00;
padding: 0.3em;
font-size: 1.2em;
width:18em;
height: 10em;
font: 1.5em Lucida Grande, 'Trebuchet MS', verdana, sans-serif;}

#form .boton {
border: 2px solid #999;
padding: 0.3em;
font-size: 1.2em;
width: 4em;}

#error {
border: 1px dashed #F00;
background-color: #FFF;
padding: 5px;}

#ok {
border: 1px dashed #060;
background-color:#FFF;
padding: 5px;}

</style>

</head>
<body>
<div id="form">

<h2>Formulario de Contacto v2</h2>
<p>Ejemplo del formulario de contacto con env&iacute;o de archivo</p>

<? echo $mensaje; /*mostramos el estado de envio del form */ ?>
<? if ($flag!='ok') { ?>
<form action="<?php echo $PHP_SELF;?>" method="post" enctype="multipart/form-data">
<p>Nombre* <br />
<input <? if (isset ($flag) && $_POST['nombre']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="nombre" value="<? echo $_POST['nombre'];?>" /></p>

<p>Email* <br />
<input <? if (isset ($flag) && $_POST['email']=='') { echo 'class="error"';} else {echo 'class="campo"';} ?> type="text" name="email" value="<? echo $_POST['email'];?>" /></p>


<p>Subir Archivo*<br />
(Solamente PDF) <br />
<input <? if (isset ($flag) && $ext=='error' || $tamano > $maximo_tamano) { echo 'class="error"';} else {echo 'class="campo"';} ?> type="file" name="archivo" value="<? echo $_FILE['archivo'];?>" /></p>

<p>Comentario* <br />
<textarea <? if (isset ($flag) && $_POST['comentario']=='') { echo 'class="com-error"';} else {echo 'class="com"';} ?> name="comentario"><? echo $_POST['comentario'];?></textarea></p>
<p><input class="boton" type="submit" name="enviar" value="enviar" /></p>
</form>
<? } ?>
</div> <!-- end form-->

</body>
</html>
  #2 (permalink)  
Antiguo 08/07/2011, 10:54
Avatar de gilbertopineda  
Fecha de Ingreso: julio-2011
Ubicación: Santiago de cali, Colombia
Mensajes: 10
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Formulario adjuntar archivos de word

Hola maroto20, el asunto es que debes indicar el tipo MIME adecuado para cada caso en el SWITCH. Hasta donde conozco, el tipo MIME de los archivos generados por Microsoft Word es:

application/msword

Prueba haciendo el cambio y luego comentas como resulto todo. Mucha suerte.
  #3 (permalink)  
Antiguo 08/07/2011, 11:02
 
Fecha de Ingreso: junio-2011
Ubicación: San Jose, Costa Rica
Mensajes: 52
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Formulario adjuntar archivos de word

Cita:
Iniciado por gilbertopineda Ver Mensaje
Hola maroto20, el asunto es que debes indicar el tipo MIME adecuado para cada caso en el SWITCH. Hasta donde conozco, el tipo MIME de los archivos generados por Microsoft Word es:

application/msword

Prueba haciendo el cambio y luego comentas como resulto todo. Mucha suerte.
Muchas gracias ya casi.

Me sirvio pero solo para adjuntar los archivos .DOC pero los .DOCX aun no me sirve, espero de su respuesta, muchas gracias y que dios lo bendiga
  #4 (permalink)  
Antiguo 08/07/2011, 11:16
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Formulario adjuntar archivos de word

maroto20:

Pensé que esto ya había quedado aclarado, reelaboraste la script que te indiqué en su momento, y por lo visto mal.

Tenes que poner el mime apropiado, como te dijo @gilbertopineda, para los doc de word es application/msword. Sin embargo deberías verificar que mime usa tu servidor para los .doc
En el mío para los .doc es efectivamente application/msword

Sin embargo para los .docx (word 2007+) es application/octet-stream

http://foros.emprear.com/php/email-adjunto/

__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 08/07/2011, 11:16
 
Fecha de Ingreso: junio-2011
Ubicación: San Jose, Costa Rica
Mensajes: 52
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Formulario adjuntar archivos de word

Listooo muchas gracias por la ayuda ya encontre el correcto para el DOCX.

application/vnd.openxmlformats-officedocument.wordprocessingml.document
  #6 (permalink)  
Antiguo 08/07/2011, 11:18
Avatar de gilbertopineda  
Fecha de Ingreso: julio-2011
Ubicación: Santiago de cali, Colombia
Mensajes: 10
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Formulario adjuntar archivos de word

maroto20 sólo es cosa de consultar un poco. Tras algunas pruebas el navegador me informa que el tipo MIME de los .docx es:

application/vnd.openxmlformats-officedocument.wordprocessingml.document

Pruébalo para ver que pasa.
  #7 (permalink)  
Antiguo 08/07/2011, 11:19
 
Fecha de Ingreso: junio-2011
Ubicación: San Jose, Costa Rica
Mensajes: 52
Antigüedad: 12 años, 9 meses
Puntos: 1
Respuesta: Formulario adjuntar archivos de word

Listooo muchas gracias por la ayuda ya encontre el correcto para el DOCX.

application/vnd.openxmlformats-officedocument.wordprocessingml.document
  #8 (permalink)  
Antiguo 08/07/2011, 11:24
Avatar de gilbertopineda  
Fecha de Ingreso: julio-2011
Ubicación: Santiago de cali, Colombia
Mensajes: 10
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: Formulario adjuntar archivos de word

Cita:
Iniciado por maroto20 Ver Mensaje
Listooo muchas gracias por la ayuda ya encontre el correcto para el DOCX.

application/vnd.openxmlformats-officedocument.wordprocessingml.document
Si @maroto20 veo que llegué tarde con la respueta. Igual me alegra que la hayas encontrado por cuenta propia. Mucha suerte.
  #9 (permalink)  
Antiguo 07/09/2012, 13:51
 
Fecha de Ingreso: noviembre-2011
Mensajes: 1
Antigüedad: 12 años, 4 meses
Puntos: 0
Respuesta: Formulario adjuntar archivos de word

muxas graxias yo andaba buscando el mime para docx

Etiquetas: php, word, formulario, botones
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:01.