2011-05-05 181 views
39

Tengo un <input type="file" id="uploadPicture" value="123">¿No se puede obtener el valor de input type = "file"?

Cuando estoy usando: alert($("#uploadPicture").val());

alerta a un diálogo vacío.

+0

¿Cuándo llamas a esa alerta? –

+2

Comprueba esto: http://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded y http://jsfiddle.net/LvsYc/638/ pueden ayudarte: D – Jaider

Respuesta

34

Puedes leerlo, pero no puedes establecer él. value="123" se ignorará, por lo que no tendrá valor hasta que haga clic en él y elija un archivo.

Incluso entonces, el valor probablemente se truncará con algo como c:\fakepath\ para mantener los detalles del sistema de archivos del usuario en privado.

+2

Right - - los navegadores también tratan esto de otra manera, por ejemplo, firefox solo mostrará el nombre del archivo después de seleccionar un archivo, mientras que algunos pueden mostrar la ruta completa. No hay nada que puedas hacer realmente con este lado del cliente ... ¿qué estás tratando de lograr OP? – Atticus

4
$('input[type=file]').val() 

Eso te dará el archivo seleccionado.

Sin embargo, no puede establecer el valor usted mismo.

6

lo puede conseguir mediante el uso de document.getElementById();

var fileVal=document.getElementById("some Id"); 
alert(fileVal.value); 

dará el valor de archivo, pero da con fakepath de la siguiente manera

c:\fakepath\filename 
+0

Recibí la ruta de acceso completa ... y usé expresiones regulares de la ruta para obtener el nombre de archivo solo ... – ashwinsakthi

-2

Quitar value = "123" que se ven muy bien. A continuación, intente:

$("file_selector").val(); 

Todavía hay un problema. Obtendrá un c: \ fakepath \ yourfile.extension.

+0

Hola y bienvenidos a Stackoverflow. ¿Te importaría expandir esta respuesta un poco más? – slm

+0

Intenté arriba para obtener un valor como $ ("file_selector"). Val(); pero estoy obteniendo c: \ fakepath \ yourfile.extension. Luego, usando lo que podré leer valor usando jquery. –

1

Es cuestión de edad, pero sólo en caso de que alguien golpee en esta banda de rodamiento ...

var input = document.getElementById("your_input"); 
var file = input.value.split("\\"); 
var fileName = file[file.length-1]; 

No hay necesidad de expresiones regulares, jQuery ....

43

@BozidarS: FileAPI está soportado bastante bien hoy en día y proporciona una cantidad de opciones útiles.

var file = document.forms['formName']['inputName'].files[0]; 
//file.name == "photo.png" 
//file.type == "image/png" 
//file.size == 300821 
Cuestiones relacionadas