¿Cómo puedo establecer el valor de esto?
<input type="file" />
¿Cómo puedo establecer el valor de esto?
<input type="file" />
Respuestas:
No puede, por razones de seguridad.
Imagina:
<form name="foo" method="post" enctype="multipart/form-data">
<input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>
No quieres que los sitios web que visitas puedan hacer esto, ¿verdad? =)
No es una respuesta a su pregunta (que otros han respondido), pero si desea tener alguna funcionalidad de edición de un campo de archivo cargado, lo que probablemente quiera hacer es:
<input>
etiqueta para cargar un nuevo archivo<input type="file" />
la imagen del producto existente? Puedo mostrar la imagen existente en una <img />
etiqueta, pero cuando envío no se pasa el archivo.
Como todos los demás aquí han declarado: No puede cargar un archivo automáticamente con JavaScript.
¡SIN EMBARGO! Si tiene acceso a la información que desea enviar en su código (es decir, no contraseñas.txt), puede cargarla como un tipo de blob y luego tratarla como un archivo.
Lo que el servidor terminará viendo será indistinguible de alguien que realmente establezca el valor de <input type="file" />
. El truco, en última instancia, es comenzar un nuevo XMLHttpRequest () con el servidor ...
function uploadFile (data) {
// define data and connections
var blob = new Blob([JSON.stringify(data)]);
var url = URL.createObjectURL(blob);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'myForm.php', true);
// define new form
var formData = new FormData();
formData.append('someUploadIdentifier', blob, 'someFileName.json');
// action after uploading happens
xhr.onload = function(e) {
console.log("File uploading completed!");
};
// do the uploading
console.log("File uploading started!");
xhr.send(formData);
}
// This data/text below is local to the JS script, so we are allowed to send it!
uploadFile({'hello!':'how are you?'});
Entonces, ¿para qué podrías usar esto? Lo uso para cargar elementos de lienzo HTML5 como jpg. Esto le ahorra al usuario la molestia de tener que abrir un file
input
elemento, solo para seleccionar la imagen local en caché que acaba de cambiar de tamaño, modificar, etc. Pero debería funcionar para cualquier tipo de archivo.
1) El problema del valor predeterminado en una entrada de archivo NO SE "hace por razones de seguridad", sino que los navegadores "simplemente no lo implementaron, sin ninguna buena razón": vea este informe detallado
2) Una solución simple puede ser usar una entrada de texto sobre la entrada del archivo, como aquí . Por supuesto, necesita algún código para enviar el archivo, utilizando ahora el valor en la entrada de texto y no la entrada del archivo.
En mi caso, hacer la aplicación HTA, eso no es un problema, no uso el formulario en absoluto.
Definir en html:
<input type="hidden" name="image" id="image"/>
En JS:
ajax.jsonRpc("/consulta/dni", 'call', {'document_number': document_number})
.then(function (data) {
if (data.error){
...;
}
else {
$('#image').val(data.image);
}
})
Después:
<input type="hidden" name="image" id="image" value="/9j/4AAQSkZJRgABAgAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U..."/>
<button type="submit">Submit</button>
En realidad podemos hacerlo. podemos establecer el valor predeterminado del archivo utilizando el control de navegador web en c # usando la biblioteca FormToMultipartPostData. Tenemos que descargar e incluir esta biblioteca en nuestro proyecto. Webbrowser permite al usuario navegar por páginas web dentro del formulario. Una vez cargada la página web, se ejecutará el script dentro del webBrowser1_DocumentCompleted. Entonces,
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
FormToMultipartPostData postData =
new FormToMultipartPostData(webBrowser1, form);
postData.SetFile("fileField", @"C:\windows\win.ini");
postData.Submit();
}
Consulte el siguiente enlace para descargar y referencia completa.
https://www.codeproject.com/Articles/28917/Setting-a-file-to-upload-inside-the-WebBrowser-com