Bueno vamos al grano, trato de hacer un sistema de adjuntos como el de gmail para las noticias en mi sitio, para ello hago lo siguiente:
dina.php
Código:
new_add_attachment.php<!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=iso-8859-1" /> <title>dina</title> <link href="../includes/style.css" rel="stylesheet" type="text/css" /> <script language="javascript"> function addInputFile() { var nInputs = document.getElementById('nInputs').value // Obtener la instancia del objeto XMLHttpRequest if (window.XMLHttpRequest) { // Mozilla, Safari, ... ajax = new XMLHttpRequest(); } else if (window.ActiveXObject) { // Internet Explorer ajax = new ActiveXObject("Microsoft.XMLHTTP"); } ajax.open("GET", "includes/addInputFile.php?id="+nInputs,true); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { document.getElementById('inputFile').innerHTML = document.getElementById('inputFile').innerHTML + ajax.responseText } } ajax.send(null) document.getElementById('nInputs').value = ++nInputs; } function resultadoUpload(estado,file,nFile) { var link = '<a href="#">Eliminar</a> - <a href="#">Ver</a>'; if (estado == 0) { var mensaje = file; } else if (estado == 1) { var mensaje = alert('Error! - El Archivo no llego al servdor' + link); } else if (estado == 2) { var mensaje = alert('Error! - Solo se permiten Archivos que no sean Imagenes' + link); } else if (estado == 3) { var mensaje = alert('Error! - No se pudo copiar Archivo. Posible problema de permisos en server' + link); } document.getElementById('formUpload'+nFiles).innerHTML=mensaje; } </script> </head> <body> <form action="new_add.php" method="post" enctype="multipart/form-data"> Titulo:<br /> <input name="title" type="text" class="adminNewAddInput" /><br /><br /> Adjuntos:<br /> <div id="inputFile"></div> <input type="hidden" id="nInputs" name="nInputs" value="0" /><a href="#" onClick="addInputFile()">Adjuntar Archivo</a><br /><br /> <p align="center"><input type="submit" name="submit" value="Agregar" /></p> </form> </body> </html>
Código:
addInputFile.php<!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=iso-8859-1" /> <title>new_add_attachment</title> </head> <body> <?php $id = $_POST['id']; $type = substr($_FILES['fileUpload']['type'], 0, 5); $dir = '../files/news'; if(isset($_FILES['fileUpload']['tmp_name'])) { if(($type == 'application') || ($type == '')) { if (!copy($_FILES['fileUpload']['tmp_name'], $dir.$_FILES['fileUpload']['name'])) { echo '<script>parent.resultadoUpload (\'3\', \''.$_FILES['fileUpload']['name'].'\',\''.$id'.\');</script>'; } else { echo '<script>parent.resultadoUpload (\'0\', \''.$_FILES['fileUpload']['name'].'\',\''.$id'.\');</script>'; } } echo '<script>parent.resultadoUpload (\'2\', \''.$_FILES['fileUpload']['name'].'\',\''.$id'.\');</script>'; } echo '<script>parent.resultadoUpload (\'1\', \''.$_FILES['fileUpload']['name'].'\',\''.$id'.\');</script>'; ?> </body> </html>
Código:
Funciona todo bien hasta que trato de subir el archivo osea hasta que se tiene que ejecutar el onChange del campo tipo file, es ahi cuando el firebug me dice:<?php if(isset($_GET["id"])) { $id = $_GET["id"]; ?> <div id="formUpload<?= $id ?>"> <form method="post" enctype="multipart/form-data" action="new_add_attachment.php" target="iframeUpload<?= $id ?>"> <input type="hidden" name="id" value="<?= $id ?>" /><input name="file<?= $id ?>" type="file" id="file<?= $id ?>" size="50" class="adminNewAddFile" onChange="javascript: submit();" /><br /> <iframe name="iframeUpload<?= $id ?>" style="display:none"></iframe> </form> </div> <?php } ?>
submit is not a function
onchange(change )
Y no me sube el archivo.
Agradeceria cualquier tipo de ayuda. Saludos y gracias de antemano