Error de javascript en mozilla

Pretendo con javascript tomar un archivo de la maquina cliente para luego subirlo al servidor. El código es el siguiente, pero en mozilla no funciona, trabajo con linux debían.
SOS es urgente...
<script language="javascript">
function filer(id) {
var ihidden = "<input type='hidden' name="+id+">";
if (document.layers) {
eval("document.layers."+id+".document.write(ihidden);");
eval("document.layers."+id+".document.close();");
} else if (document.all)
eval(id+".innerHTML = ihidden;");
}
function filew(ifile) {
var data = ifile.value.bold();
var id = ifile.name;
var remove = " <a href='#' style='cursor:hand' onclick=\"filer('"+id+"')\">Borrar</a>";
if (document.layers) {
eval("document.layers."+id+".document.write(data);");
eval("document.layers."+id+".document.close();");
} else if (document.all)
eval(id+".innerHTML += data+remove+'<br>';");
}
function nuevasubida() {
var elem = document.f.length;
var upload = "<span id='f"+elem+"'><input type='/home/usuario/DicOOo.sxw' name='f"+elem+"' style='display:none;visibility:hidden;' onchange='filew(this)'></span>";
if (document.layers) {
document.layers.files.document.write(upload);
document.layers.files.document.close();
} else if (document.all)
files.innerHTML += upload;
eval("document.f.f"+elem+".click();");
}
</script>

1 respuesta

Respuesta
1
Una cosa antes que nada:
var upload = "<span id='f"+elem+"'><input type='/home/usuario/DicOOo.sxw' name='f"+elem+"' style='display:none;visibility:hidden;' onchange='filew(this)'></span>";
no querras poner en realidad type="text" y el value="/home/usuario/DicOOo.sxw" ???
Porque entiendo que si ese input es el f1 al que intenta hacer el click() y no es de un type reconocido, puede que sea el origen del problema.
De todos modos, sigo sin entender por que no puedes hacer un:
<input type="file" value="/home/usuario/DicOOo.sxw" style="visibility:hidden">
Y no te hace falta la intervencion del usuario...
Puedes decirme si lo del type es el problema?
En caso negativo... ¿puedes ponerme todo el código necesario para poder reproducir el error? Me refiero al frameset, y cada frame con el código tal cual para ver que falla exactamente... no estoy demasiado libre de tiempo...
uf, así a pelo... oye, ¿no puedes darme una dirección donde ver el error? ¿O al menos no puedes decirme en que linea te da el error y el mensaje del mismo?
Por otra parte... ¿por qué no usas un input file?
No puedo usar input file porque necesito que tome el archivo sin intervención del usuario cliente...
El error es el siguiente:
document.f.f1 has no properties
eval("document.f.f"+elem+".click():");
Te explico un poco, estamos realizando una aplicación web trabajando con mozilla y php, se llama al openoffice que es abierto en un frame inferior empotrado en el mozilla, con plantillas que el usuario va eligiendo... el problema es que cdo guarda el documento del ooowriter lo hace en la maquina cliente, y necesito subir ese archivo al servidor, por eso la opción de utilizar este código en javascript para poder tomar el archivo del cliente y hacer el upload... y la idea es que un botón que esta en el frame superior que cierra el procesador, dispare el evento para subir el archivo, pero no le puedo dar la opción examinar porque no seria practico para el usuario dado todas las acciones con que trabaja en la página...
Espero haberme explicado mejor...
Saludos
Este es el código:
"formusubida.php"
<HTML>
<HEAD>
<TITLE>:: Formulario de carga de ficheros ::</TITLE>
</HEAD>
<BODY>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<input type="file" value="/home/usuario/pruebasubida0702.sxw" style="visibility:hidden">
<input type="file" name="userfile">
<input type="submit" value="Enviar">
</form>
</BODY>
</HTML>
"subearchivo.php"
<?
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "../juz/".$nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
?>
Soy nueva en esto, antes manejaba el nombre con "userfile", ¿y en el código que me mandaste como lo hago?
Mil gracias
Saludos
Ok, si pones el file que te pongo yo, quitas el otro y puedes acceder al que te doy si le pones el mismo nombre:
<input type="file" value="/home/usuario/pruebasubida0702.sxw" style="visibility:hidden" name="userfile">
Así todo debiera quedarte igual...
Quita el tuyo:
<input type="file" name="userfile">
Y quita también el javascript que me enviaste...
Si pones el código de lo que aquí me pones, la página que envía y la que recibe, creo que debería funcionarte bien tal como esta...
Si no lo hace, donde estoy ahora no puedo probar ese código, pero podría mirarlo para mañana, si lo necesitas.
A ver si para mañana puedo echarle un ojo, ¿ok?
De nuevo te paso el código, no funciona... si podes hacer el favor de probarlo... ya no se por donde más buscar o de que otra forma puedo hacer que funcione esta subida sin intervención del usuario...
"formusubida.php"
<HTML>
<HEAD>
<TITLE>:: Formulario de carga de ficheros ::</TITLE>
</HEAD>
<BODY>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
<input type="file" value="/home/usuario/subida0802.sxw" style="visibility:hidden" name="userfile">
<input type="submit" value="Enviar">
</form>
</BODY>
</HTML>
"subearchivo.php"
<?
//datos del arhivo
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "../juz/".$nombre_archivo)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
?>
Esta tal cual pero no funciona, le di permisos completos al los directorios y al archivo
Saludos
Patricia
He estado investigando y no es un problema de mozilla, sino de seguridad.
He comprobado que no se le puede dar un valor al value de un input de tipo file programaticamente, sin contar con el usuario.
Esto tiene su lógica, porque si se pudiera hacer, imagina que sin tu saberlo te buscan tu /etc/shadow, por ejemplo y lo mandan sin tu saberlo... o cualquier otro archivo de la maquina cliente (documentos, imágenes, archivos en general).
Creo que vas a tener que hacer algo diferente a lo que quieres, porque creo al 85% que no vas a poder hacerlo...
Siento que no se pueda (¿si al final consigues hacerlo, cuéntamelo, ok?).

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas