web-dev-qa-db-fra.com

Impossible d'obtenir la valeur du type d'entrée = "fichier"?

J'ai un <input type="file" id="uploadPicture" value="123">

Quand j'utilise: alert($("#uploadPicture").val());

Il alerte un dialogue vide.

45
Danpe

Vous pouvez le lire, mais vous ne pouvez pas régler . value="123" sera ignoré, il n'aura donc de valeur que si vous cliquez dessus et choisissez un fichier.

Même dans ce cas, la valeur sera probablement modifiée avec quelque chose comme c:\fakepath\ pour garder les détails du système de fichiers de l'utilisateur privés.

41
Quentin

@BozidarS: FileAPI est assez bien supporté de nos jours et fournit plusieurs options utiles.

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

Vous pouvez l'obtenir en utilisant document.getElementById ();

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

donnera la valeur du fichier, mais donne fakepath comme suit

c:\fakepath\filename
8
Naresh.P
$('input[type=file]').val()

Cela vous donnera le fichier sélectionné. 

Cependant, vous ne pouvez pas définir la valeur vous-même.

4
Jack Marchetti

Vous ne pouvez pas définir la value d'une entrée file dans le balisage, comme vous l'avez fait avec value="123".

Cet exemple montre que cela fonctionne vraiment: http://jsfiddle.net/marcosfromero/7bUba/

4
marcosfromero

C'est une vieille question mais juste au cas où quelqu'un cognerait sur cette bande de roulement ... 

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

Pas besoin de regex, jQuery ....

2
Bozidar Sikanjic

ne donnez pas cette valeur d'entrée dans le fichier = "123".

$ (document) .ready (fonction () { 

  var img = $('#uploadPicture').val();

});

0
Md Shahriar