38 votes

Chemin complet à partir d'une entrée de fichier en utilisant jQuery

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 ?

47voto

Pekka 웃 Points 249607

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.

15voto

DWX Points 632

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):-

JSFIDDLE

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.

-11voto

Comme indiqué ci-dessus, il s'agit généralement d'un problème de permission. Essayez de déplacer le fichier dans une autre zone et accordez-lui toutes les permissions.

var path = $('#file').attr("value") ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X