2010-08-15 9 views

Antwort

44

Sie können nicht: Es ist eine Sicherheitsfunktion in allen modernen Browsern.

Für IE8, es ist standardmäßig deaktiviert, kann aber mit einer Sicherheitseinstellung wieder aktiviert werden:

Wenn eine Datei mit Hilfe des input type = Dateiobjekts ausgewählt wird, auf die der Wert der Werteigenschaft abhängig Wert der Sicherheitseinstellung "Lokalen Verzeichnispfad beim Hochladen von Dateien auf einen Server einschließen" für die Sicherheitszone, die zum Anzeigen der Webseite mit dem Eingabeobjekt verwendet wird.

Der vollqualifizierte Dateiname der ausgewählten Datei wird nur zurückgegeben, wenn diese Einstellung aktiviert ist. Wenn die Einstellung deaktiviert ist, ersetzt Internet Explorer 8 das lokale Laufwerk und den Verzeichnispfad durch die Zeichenfolge C: \ fakepath \, um eine unangemessene Offenlegung von Informationen zu verhindern.

In allen anderen gängigen Mainstream-Browsern, die ich kenne, ist es auch ausgeschaltet. Der Dateiname ist der beste, den Sie bekommen können.

Weitere detaillierte Informationen und gute Links in this question. Es bezieht sich darauf, den Wert serverseitig zu erhalten, aber das Problem ist in JavaScript vor der Übermittlung des Formulars identisch.

+5

Ich kann den Pfad zu der Datei nicht mit dem Browser abrufen? Das ist Wahnsinn!! – gruszczy

+5

@grusz Nun, es hängt von deiner Sichtweise ab: Es ist nichts von der Website, wo die hochgeladene Datei wirklich herkommt. Es ist nur schmerzhaft, wenn Sie den ursprünglichen Dateispeicherort als Service für den Benutzer speichern wollen, ich weiß .... Flash-basierte Upload-Komponenten wie uploadify oder swfupload.org * können * hier mehr Freiheiten haben. –

+0

Das bedeutet also, ich kann den Wert nicht von einer Datei in eine andere kopieren, weil ich nie den vollständigen Pfad habe? – gruszczy

-17

Wie oben angegeben, ist dies normalerweise ein Berechtigungsproblem. Versuchen Sie, und verschieben Sie die Datei in einen anderen Bereich und erteilen Sie ihr volle Berechtigungen.

var Pfad = $ ('# Datei'). Attr ("Wert");

+1

Wenn Sie die Datei in einen anderen Bereich verschieben und ihr unterschiedliche Berechtigungen erteilen, erhalten Sie nicht den vollständigen Dateipfad. die lokalen Dateiberechtigungen haben sehr wenig oder gar nichts damit zu tun, wie Browser mit den Dateien umgehen –

13

Nun, den vollen Pfad ist nicht möglich, aber wir können einen temporären Pfad haben.

Dieses Versuchen:

Es gebe Ihnen einen temporären Pfad nicht der genaue Weg, können Sie dieses Skript verwenden, wenn Sie ausgewählte Bilder wie in diesem jsfiddle Beispiel zeigen wollen (Versuchen Sie es durch Bilder als auch selectng als andere Dateien): -

JSFIDDLE

Hier ist der 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>"); 
}); 

Es ist nicht genau das, was Sie suchen, aber sein kann es Ihnen irgendwo helfen kann.

+1

Das war extrem hilfreich. Genau das, was ich gesucht habe. Vielen Dank. – JeffA

+0

Das ist genau das, was ich will. Danke vielmals!! –

+0

Ich habe die meiste Zeit für dieses nützliche Skript verschwendet :) Danke Bro – w3debugger