Quand j'appelle val()
sur une entrée avec type="file"
Je n'obtiens que le nom du fichier et non le chemin complet. Comment puis-je obtenir le chemin complet ?
Réponses
Trop de publicités?Vous ne pouvez pas : il s'agit d'une fonction de sécurité dans tous les navigateurs modernes.
Pour IE8 Il est désactivé par défaut, mais peut être réactivé à l'aide d'un paramètre de sécurité :
Lorsqu'un fichier est sélectionné à l'aide de l'objet input type=file, la valeur de la propriété value dépend de la valeur du paramètre de sécurité "Include local directory path when uploading files to a server" de la zone de sécurité utilisée pour afficher la page Web contenant l'objet input.
Le nom de fichier complet du fichier sélectionné est renvoyé uniquement lorsque ce paramètre est activé. Lorsque ce paramètre est désactivé, Internet Explorer 8 remplace le lecteur local et le chemin d'accès au répertoire par la chaîne de caractères suivante C:\fakepath\ afin d'éviter la divulgation d'informations inappropriées.
Dans tous les autres navigateurs grand public actuels que je connais, elle est également désactivée. Le nom du fichier est le meilleur que vous puissiez obtenir.
Des informations plus détaillées et de bons liens dans cette question . Il s'agit de récupérer la valeur côté serveur, mais le problème est le même en JavaScript avant la soumission du formulaire.
Eh bien, obtenir le chemin complet n'est pas possible mais nous pouvons avoir un chemin temporaire.
Essayez ça :
Il vous donnera un chemin temporaire et non le chemin exact, vous pouvez utiliser ce script si vous voulez montrer des images sélectionnées comme dans cet exemple jsfiddle(Essayez-le en sélectionnant des images ainsi que d'autres fichiers):-
Voici le code :-
HTML:-
<input type="file" id="i_file" value="">
<input type="button" id="i_submit" value="Submit">
<br>
<img src="" width="200" style="display:none;" />
<br>
<div id="disp_tmp_path"></div>
JS:-
$('#i_file').change( function(event) {
var tmppath = URL.createObjectURL(event.target.files[0]);
$("img").fadeIn("fast").attr('src',URL.createObjectURL(event.target.files[0]));
$("#disp_tmp_path").html("Temporary Path(Copy it and try pasting it in browser address bar) --> <strong>["+tmppath+"]</strong>");
});
Ce n'est pas exactement ce que vous recherchiez, mais cela peut peut-être vous aider.