Pregunta

Tengo un formulario HTML ( Upload.htm ) con un interior de control de carga de archivos HTML de la misma.

<form id="frmupload" name="upload" enctype="multipart/form-data" action="uploadhandler.ashx" method="post">
    <input id="uploader" name="uploadctrl" type="file"/>
</form>

También hay un método JavaScript de la página anterior que dice así:

function performUpload(){
    document.getElementById('frmupload').submit();
}

Me llaman a esto dentro de una página ( uploadpage.htm ) desde dentro de una iframe:

<iframe id="docframe" src="upload.htm" style="display:none"></iframe>

Trato de ejecutar la instrucción se muestra a continuación de la uploadpage.htm página:

var i = document.getElementById('docframe');
i.contentWindow.performUpload();

Me sale un error diciendo Acceso denegado , y mis paradas del depurador en la primera función de JavaScript que he mostrado. Tanto los archivos están en el mismo lugar en el proyecto web. Tienen el mismo nombre de dominio también. ¿Por qué aparece este error, entonces?

Por supuesto, antes, yo podría publicar la página: cuando no se estableció el atributo name para el control de carga HTML. Pero después de configurar el atributo de nombre en formato HTML, me sale este error extraño. ¿Por qué no he recibido la primera vez?

Si hubiera un vistazo @ este post -> " acceso denegado" cuando se trata de secuencias de comandos a iframe acceso en IE8 , pero no sirvió de nada.

¿Fue útil?

Solución

IE no permite la manipulación del tipo = "archivo" elemento de entrada de Javascript por razones de seguridad. Ajuste del nombre de archivo o la invocación de un evento de clic para mostrar el diálogo del navegador resultará en un "acceso denegado" error en el envío del formulario -. Internet Explorer es inteligente por recordar lo que se han invocado métodos

problema similar: http://www.webdeveloper.com/forum/showthread php? t = 181272

Otros consejos

Tradicionalmente, el acceso JavaScript para input type="file" HTML está severamente limitada por motivos de seguridad. Que yo sepa, no se puede hacer lo siguiente con JS en un archivo de subida elemento:

  1. No se puede leer el "valor" del elemento, ya que tiene el nombre del archivo.
  2. No se puede disparar hasta el menú de selección de archivos a través de JS.
  3. No se puede disparar enviar el archivo de cargador de control a través de JS.

Todo esto es para prevenir ataques maliciosos como el robo de sus archivos en segundo plano a través de JS. No he jugado con un elemento input type="file" en cuando, pero mi mejor conjetura es que llegará a problemas similares (si no todos) en otros navegadores también.

Su mejor opción es una solución basada en Flash o tal vez algo nuevo control HTML5.

Además, aquí es una referencia oficial sobre el tema:

http://msdn.microsoft. com / es-es / library / ms535263 (v = vs.85) .aspx

Comprobar "Contenido de la comunidad" todo el camino en la parte inferior de la página anterior.

En ambos los archivos HTML - el que está en el marco y otro que contiene el marco -. Intentarlo añadiendo document.domain='example.com' donde 'example.com' es el nombre de dominio

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top