Me gustaria saber como puedo hacer para que un boton de tipo <input type="file" name="archivo"> pudiera ser submit para despues desde una rutina php pueda hacer esto
<?php
if($_POST["archivo"])
{
//INSTRUCCIONES PHP
}
?>
| |||
Como hacer que el boton input file sea submit? Me gustaria saber como puedo hacer para que un boton de tipo <input type="file" name="archivo"> pudiera ser submit para despues desde una rutina php pueda hacer esto <?php if($_POST["archivo"]) { //INSTRUCCIONES PHP } ?> |
| |||
Re: Como hacer que el boton input file sea submit? mira en esta pagina http://www.w3schools.com/php/php_file_upload.asp, ahi te explica como hacer para que puedas verificar si alguien subio o no un archivo. Cuando el $_FILES["file"]["error"] es 0 es porque subieron un fichero. Prueba a imprimir el $_FILES con print_r($_FILES) en el fichero .php para que veas todo lo que tiene. Última edición por carceron; 07/02/2008 a las 11:04 |
| ||||
Re: Como hacer que el boton input file sea submit? <form action="javascript:alert('pepe')"> <input type="file" onchange="this.form.submit();" /> </form>
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Re: Como hacer que el boton input file sea submit? Lo que puso Karlankas ya lo logre hacer. ARCHIVO: formulario.php <script language="javascript"> function submit(boton) { document.Individuos.boton.action = "previsor.php"; document.Individuos.boton.submit(); } </script> <input type="file" size="23" name="imagen" style="border: 1px solid #FFFFFF; background:#9CBADE; font-family: Arial; font-size: 12px; color: white" onChange="submit(this)"/> ARCHIVO: previsor.php echo $_FILES["imagen"]["name"]; lo que esta como de color rojo no me funciona a ver si me pueden ayudar |
| |||
Re: Como hacer que el boton input file sea submit? le has puesto a la etiqueta FORM lo siguiente?: ENCTYPE="multipart/form-data" ejem: <form action="upload_archivo.cgi" method="post" ENCTYPE="multipart/form-data"> ahh!!! olvidaba decirte, no te recomiendo hacer aquello de que cuando el usuario seleccione el archivo que se envie el formulario, por cuestiones de usabilidad, hay mucha gente que se equivoca seleccionando los ficheros y lo peor que les puede pasar es que tras seleccionar mal el fichero el formulario se les envie sin darles opcion de corregir. "No todos los usuarios manejan el computador bien como tu". Ten eso presente. |
| ||||
Re: Como hacer que el boton input file sea submit? Y si cambias el $_FILES por $HTTP_POST_FILES? Depende del php.ini que admita o no el $_FILES..
__________________ Cómo escribir No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia. |
| |||
Re: Como hacer que el boton input file sea submit? ARCHIVO: formulario.php <script language="javascript"> function submit(boton) { document.Individuos.boton.action = "previsor.php"; document.Individuos.boton.submit(); } </script> <form action="formulario_datos.php?Sexo=<?=$_GET["Sexo"]?>" method="post" name="Individuos" onSubmit="return Valida(this);" enctype="multipart/form-data"> <input type="file" size="23" name="imagen" style="border: 1px solid #FFFFFF; background:#9CBADE; font-family: Arial; font-size: 12px; color: white" onChange="submit(this)"/> <iframe src="previsor.php" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 250px; height: 172px;"> </iframe> <input name="EnviarI" type="submit" value="Enviar" style="border: 1px solid #FFFFFF; background:#9CBADE; font-family: Arial; font-size: 12px; color: black"> <input name="Reestablecer" type="reset" value="Limpiar" style="border: 1px solid #FFFFFF; background:#9CBADE; font-family: Arial; font-size: 12px; color: black"></td> </form> El formulario que tengo es el que esta arriba el tiene su boton submit para enviar sus datos y tambien el input file que tengo hice que hiciera el evento submit pero que me redirecciona al archivo previsor.php y ahi me gustaria recepcionar los datos del input file para visualizar la imagen como preview a trraves de un iframe que esta en el archivo que contiene el formulario algo parecido a lo que tiene caricatos. ARCHIVO: previsor.php echo $_FILES["imagen"]["name"]; //imprimir el nombre del archivo para prueba |
| ||||
Re: Como hacer que el boton input file sea submit? Hola: El action y el submit son cosas del formulario, así que se te coló un "boton"... function submit(boton) { document.Individuos.action = "previsor.php"; document.Individuos.submit(); } Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Como hacer que el boton input file sea submit? Hola: Por cierto, ese boton que pasas como parámetro (me acabo de dar cuenta) son el "input file", entonces para usarlo sería: boton.form.action ="previsor.php" O podías pasar como parámetro todo el formulario: onchange="submit(this.form)" Otra cosilla... no te acostumbres a usar esos nombres para las funciones (submit()) que te pueden dar algún dolor de cabeza. Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| |||
Re: Como hacer que el boton input file sea submit? ya me envia los datos con la funcion <script language="javascript"> function enviar() { document.Individuos.action = "previsor.php"; document.Individuos.submit(); } </script> pero el problema es que no quedan en el que es lo que quiero y se van directamente a la pagina previsor.php <iframe src="previsor.php" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 250px; height: 172px;"> </iframe> |
| ||||
Re: Como hacer que el boton input file sea submit? Cita: Exacto, el formulario envía bien los datos... y el secreto está en la sesión php... la primera línea es session_start(), y luego tanto la imagen (el contenido binario) como su tipo (para asignar la cabecera de imagen) se guardan en variables de sesión que luego recibe el fichero que muestra la imagen...
Iniciado por javsoft ![]() ya me envia los datos con la funcion <script language="javascript"> function enviar() { document.Individuos.action = "previsor.php"; document.Individuos.submit(); } </script> pero el problema es que no quedan en el que es lo que quiero y se van directamente a la pagina previsor.php <iframe src="previsor.php" id="ver" name="ver" style="display: block; margin: auto; border-width: 2px; width: 250px; height: 172px;"> </iframe> Si crees que la parte en cliente (javascript/html) está controlado, danos un aviso para que algún moderador mueva el tema a php, que evidentemente es lo que resta (tambiín puedes reportarlo tú mismo) Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| |||
Re: Como hacer que el boton input file sea submit? hola fijate que tengo un problema ahora con IE y OPERA pero me gustaria saber si me puedes enviar el codigo fuente y asi pueda acoplarlo a mi necesidad |
| ||||
Re: Como hacer que el boton input file sea submit? Hola: El código es exactamente el que está en el artículo: Revisar las imágenes antes de subirlas, pero en ese código debes suprimir lo referente al chequeo... $onload... Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| ||||
Re: Como hacer que el boton input file sea submit? Hola: javsoft: acabo de ver el comentario que pusiste en el artículo, así que en principio intenta que te funcione, que es como realmente se aprende, y mañana (hoy ya es demasiado tarde) preparo el zip que propones... aunque como puse antes no es más que cortar y pegar... no sabría decirte si la configuración del server también habría que considerar... Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |
| |||
Re: Como hacer que el boton input file sea submit? hola caricatos mira segun tu ejemplo yo tengo 3 archivos check_form.html <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head><title>Formulario</title> <script type="text/javascript"> function actuar(peso, anchura, altura) { this.peso.value = peso; this.ancho.value = anchura; this.alto.value = altura; } function ini() { document.forms.formu.actualizar = actuar; window.frames.ver.location.href = "previsor.php"; document.forms.formu.actualizar(0, 0, 0); } function validar(f) { enviar = /\.(gif|jpg|png)$/i.test(f.archivo.value); if (!enviar) alert("seleccione imagen"); return enviar; } function limpiar() { document.forms.formu.actualizar(0, 0, 0); f = document.getElementById("archivo"); nuevoFile = document.createElement("input"); nuevoFile.id = f.id; nuevoFile.type = "file"; nuevoFile.name = "archivo"; nuevoFile.value = ""; nuevoFile.onchange = f.onchange; nodoPadre = f.parentNode; nodoSiguiente = f.nextSibling; nodoPadre.removeChild(f); (nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile): nodoPadre.insertBefore(nuevoFile, nodoSiguiente); } function checkear(f) { function no_prever() { alert("El fichero seleccionado no es válido..."); limpiar(); } function prever() { var campos = new Array("maxpeso", "maxalto", "maxancho"); for (i = 0, total = campos.length; i < total; i ++) f.form[campos[i]].disabled = false; actionActual = f.form.action; targetActual = f.form.target; f.form.action = "previsor.php"; f.form.target = "ver"; f.form.submit(); for (i = 0, total = campos.length; i < total; i ++) f.form[campos[i]].disabled = true; f.form.action = actionActual; f.form.target = targetActual; } (/\.(gif|jpg|png)$/i.test(f.value)) ? prever() : no_prever(); } function datosImagen(peso, ancho, alto, error) { function mostrar_error() { enviar = false; mensaje = "Ha habido un error (error nº " + error + "):"; if (error % 2 == 1) // tipo incorrecto mensaje += "\nel fichero no es válido"; error = parseInt(error / 2); if (error % 2 == 1) // excede en peso mensaje += "\nla imagen pesa mogollón (" + peso + ")."; error = parseInt(error / 2); if (error % 2 == 1) // excede en anchura mensaje += "\nla imagen excede en anchura (" + ancho + ")."; error = parseInt(error / 2); if (error % 2 == 1) // excede en altura mensaje += "\nla imagen excede en altura (" + alto + ")."; error = parseInt(error / 2); alert (mensaje); limpiar(); } if (error == 0) document.forms.formu.actualizar(peso, ancho, alto); else mostrar_error(); } </script> <style type="text/css"> html { margin: 0; } body { margin: auto; background-color: #abcabc; } h1 { text-align: center; background: #eeeeee url(../dibujos/miemoticon.gif) no-repeat 1% 50%; color: blue; margin: 0; height: 50px; } p { margin: 0; text-align: justify; text-indent: 1cm; } #intro { margin: .5cm; padding: .5cm; background-color: #defdef; color: black; } </style></head><body onLoad="ini()"> <h1> Formulario (chequeo de imágenes) </h1> <div id="intro"> <p> En este formulario se puede elegir una imagen del tipo gif/png/jpg, y se mostrará en un recuadro reservado para la previsualización. Si la extensión no fuera la deseada se limpiará el campo y no podrá enviarse hasta que la imagen sea de la extensión correcta. </p> <p> Existen también tres campos deshabilitados con las medidas permitidas para esa imagenes (maxpeso, maxancho y maxalto) </p> </div> <form target="" action="receptor.php" method="post" enctype="multipart/form-data" onSubmit="return validar(this)" name="formu" style="margin: auto; text-align: center;"> <input name="archivo" id="archivo" type="file" onChange="checkear(this)"> <fieldset style="width: 80%;"><legend>Límites aceptados</legend> peso máximo: <input disabled="disabled" name="maxpeso" value="80000" type="text"> anchura máxima: <input disabled="disabled" name="maxancho" value="640" type="text"> altura máxima: <input disabled="disabled" name="maxalto" value="480" type="text"> </fieldset> <fieldset style="width: 80%;"><legend>Valores actuales</legend> peso actual: <input readonly="readonly" name="peso" value="0" type="text"> anchura actual: <input readonly="readonly" name="ancho" value="0" type="text"> altura actual: <input readonly="readonly" name="alto" value="0" type="text"> </fieldset> <textarea name="mensaje" style="width: 80%; height: 100px;">comentarios</textarea> <br> <button type="submit" id="bb" style="text-align: center;">enviar formulario (pruebas)</button> </form> <iframe src="previsor.php" id="ver" name="ver" style="border-width: 2px; margin: auto; display: block; width: 484px; height: 364px;"> </iframe> <hr> <p style="text-align: center; color: red; visibility: visible;" id="aviso"> Selecciones una imagen gif/png/jpg </p> <br /><div style="z-index:3" class="smallfont" align="center"><!-- google_ad_section_start(weight=ignore) -->LinkBacks Enabled by <a rel="nofollow" href="http://www.crawlability.com/vbseo/">vBSEO</a> 3.1.0<!-- google_ad_section_end --></div></body></html> receptor.php <?php session_start(); $defecto = "webmaster.gif"; $Ok = isset($_FILES["archivo"]); $url = ($Ok) ? $_FILES["archivo"]["tmp_name"] : $defecto; list($anchura, $altura, $tipoImagen, $atributos) = getimagesize($url); $error = (isset($atributos)) ? 0 : 1; $los_tipos = array("gif", "jpg", "png"); $tipo = ($Ok) ? "image/".$los_tipos[$tipoImagen - 1] : "image/gif"; $fichero = ($Ok && ($error == 0)) ? $_FILES["archivo"]["name"] : $defecto; $tam = filesize($url); $OkTam = isset($_POST["maxpeso"]); $OkAncho = isset($_POST["maxancho"]); $OkAlto = isset($_POST["maxalto"]); $maxTam = ($OkTam) ? (int) $_POST["maxpeso"]: 100000; $maxAncho = ($OkAncho) ? (int) $_POST["maxancho"]: 640; $maxAlto = ($OkAlto) ? (int) $_POST["maxalto"]: 480; $error += ($tam <= $maxTam) ? 0 : 2; $ancho = ($error == 1) ? 0 : $anchura; $alto = ($error == 1) ? 0 : $altura; $error += ($ancho <= $maxAncho) ? 0 : 4; $error += ($alto <= $maxAlto) ? 0 : 8; $datos = ($error == 0) ? $url : $defecto; $onload = ($Ok) ? "onload='parent.datosImagen($tam, $ancho, $alto, $error)'": ''; $datos_imagen = fread(fopen($datos, "rb"), filesize($datos)); $_SESSION["cont"] = $datos_imagen; $_SESSION["tipo"] = ($error == 0) ? $tipo : "image/gif"; ?> <html> <head> <style type="text/css" > html { margin: 0; height: 100%; } body { height: 100%; background-image: url(previendo.php?dato=<?=$fichero;?>); background-repeat: no-repeat; background-position: center center; } </style> </head> <body <?=$onload;?>> </body> </html> previsor.php <?php session_start(); $url = ($_SESSION["cont"] == "") ? fread(fopen("webmaster.gif", "rb"), filesize("webmaster.gif")) : $_SESSION["cont"]; $tip = ($_SESSION["tipo"] == "") ? "image/gif" : $_SESSION["tipo"]; header("Content-type: $tip"); echo $url; session_destroy(); ?> |
| ||||
Re: Como hacer que el boton input file sea submit? Hola: Voy a darte dos noticias, una buena y otra mala... voy a empezar por la buena, y es que probé el código que tienes (el que has pegado) en mi "localhost" con explorer, y funciona perfectamente... claro que hay una mala noticia, que supongo que te "cabreará"... y es que el fichero que has puesto como "receptor.php", debería ser el receptor normal que tienes, pero en la previsualización debería llamarse "previsor.php" y el que se llama "previsor.php" debería ser "previendo.php", o sea que con un par de cambios de nombre de ficheros consigues tu objetivo... y el que se llama receptor.php que sea el definitivo (bueno, los nombres debes decidirlo tú)... Sobre subir un .zip, lo preparé y cuando lo iba a subir, descubrí que ya lo había hecho... el enlace es: check_form.zip... ¡Quién sabe cuando lo habré subido...! Saludos ![]()
__________________ Por favor: No hagan preguntas de temas de foros en mensajes privados... no las respondo |