¿Establecer programáticamente el valor de un elemento HTML de entrada type = "file"? [duplicar]

Nota:

Las respuestas a continuación reflejan el estado de los navegadores heredados en 2009. Ahora puede establecer el valor del elemento de entrada del archivo de forma dinámica / programática utilizando JavaScript en 2017.

Consulte la respuesta en esta pregunta para obtener más detalles, así como una demostración:
¿Cómo establecer el valor de entrada del archivo de forma programática (es decir, al arrastrar y soltar archivos)?

Lo que necesito hacer es enviar programáticamente una solicitud POST a un servicio desde el código javascript desde una aplicación que usa .NET WebBrowser, que es básicamente un Internet Explorer integrado. Este servicio requiere que uno de los campos sea un "archivo".

Entonces, ¿hay alguna forma de establecer el valor de una entrada de "archivo" en un formulario, dado que tengo el contenido del archivo, como en una matriz de bytes (y no la ruta del archivo; no estoy tratando de robar archivos de los usuarios aquí :)).

¿O tal vez una forma de crear y enviar explícitamente la solicitud POST en lugar de crear un FORMULARIO de forma dinámica?

Necesito usar código JavaScript que se ejecutará en mi WebBrowser (piense en IE). es posible?

preguntado el 16 de mayo de 11 a las 18:05

1 Respuestas

Desafortunadamente, esto no es posible ya que sería un problema de seguridad. El control de Javascript sobre los campos de entrada de archivos es muy limitado. De lo contrario, la gente podría usar esto para robar archivos de las computadoras de los usuarios.

Dado que tiene control sobre el navegador, puede enviar el archivo mediante una HTTPWebRequest normal, pero no se puede hacer en JavaScript.

contestado el 16 de mayo de 11 a las 22:05

Esta es una aplicación .NET con un navegador web integrado ... Técnicamente puede usar HttpWebRequest o de hecho, súbelo directamente a través de FTP :) - mellamokb

¿Incluso si tengo acceso al contenido del archivo desde mi código javascript? (El contenido, no solo la ruta). - Juan

Sí, estaba en el proceso de agregar eso a mi respuesta: Chris Kooken

Debería buscar el formato sin formato en el que se envían los datos para una publicación de archivo y construirlo usted mismo. - mellamokb

@jsoldi si tiene acceso al contenido y es textual. Puede leer el contenido en una variable y publicarlo en el servidor como una cadena. - Chris Kooken

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.