2010-08-15 4 views

Répondre

44

Vous ne pouvez pas: C'est une fonctionnalité de sécurité dans tous les navigateurs modernes.

Pour IE8, il est désactivé par défaut, mais peut être réactivée en utilisant un paramètre de sécurité:

Lorsqu'un fichier est sélectionné en utilisant le type d'entrée = objet fichier, la valeur de la propriété de la valeur dépend de la valeur du paramètre de sécurité "Inclure le chemin du répertoire local lors du chargement des fichiers sur un serveur" pour la zone de sécurité utilisée pour afficher la page Web contenant l'objet d'entrée.

Le nom de fichier complet du fichier sélectionné est renvoyé uniquement lorsque ce paramètre est activé. Lorsque le paramètre est désactivé, Internet Explorer 8 remplace le lecteur local et le chemin du répertoire par la chaîne C: \ fakepath \ afin d'empêcher la divulgation d'informations inappropriées.

Dans tous les autres navigateurs courant courants que je connais, il est également désactivé. Le nom du fichier est le meilleur que vous pouvez obtenir.

Plus d'informations détaillées et de bons liens dans this question. Il se réfère à l'obtention de la valeur côté serveur, mais le problème est le même en JavaScript avant la soumission du formulaire.

+5

Je n'arrive pas à obtenir le chemin d'accès au fichier en utilisant le navigateur? C'est de la folie!! – gruszczy

+5

@grusz Eh bien, cela dépend de votre point de vue: Ce n'est pas l'activité du site web où le fichier téléchargé vient vraiment. C'est juste douloureux quand vous voulez stocker l'emplacement du fichier d'origine comme un service pour l'utilisateur, je sais .... Composants de téléchargement Flash basé comme uploadify ou swfupload.org * peut * avoir plus de libertés ici. –

+0

Donc, cela signifie que je ne peux pas copier la valeur d'une entrée de fichier à une autre, parce que je n'ai jamais le chemin complet? – gruszczy

-17

Comme indiqué ci-dessus, il s'agit généralement d'un problème d'autorisation. essayez et déplacez le fichier vers une autre zone et accordez-lui les autorisations complètes.

var chemin = $ ('# fichier'). Attr ("valeur");

+1

déplacer le fichier vers une zone différente et en lui accordant des autorisations différentes ne vous donnera pas le chemin d'accès complet du fichier. les autorisations de fichiers locaux ont très peu à voir avec la façon dont les navigateurs gèrent les fichiers –

13

Eh bien, obtenir le chemin complet n'est pas possible mais nous pouvons avoir un chemin temporaire.

Essayez ceci:

Il vous donnera un chemin temporaire non le chemin précis, vous pouvez utiliser ce script si vous souhaitez afficher les images sélectionnées comme dans cet exemple jsFiddle (Essayez par selectng 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 ne est pas exactement ce que vous recherchez, mais peut-être il peut vous aider quelque part.

+1

Cela a été extrêmement utile. Exactement ce que je cherchais. Je vous remercie. – JeffA

+0

C'est exactement ce que je veux. Merci beaucoup!! –

+0

J'ai perdu la plupart de mon temps pour ce script utile :) Merci Bro – w3debugger

Questions connexes