<input type="file" id="file-id" name="file_name" onchange="theimage();">
Dies ist meine Upload-Schaltfläche.
<input type="text" name="file_path" id="file-path">
Dies ist das Textfeld, in dem ich den vollständigen Pfad der Datei angeben muss.
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
Dies ist das JavaScript, das mein Problem löst. Aber im Alert-Wert erhalte ich
C:\fakepath\test.csv
und Mozilla gibt mir:
test.csv
Ich möchte aber den lokalen voll qualifizierten Dateipfad. Wie lässt sich dieses Problem lösen?
Wenn dies auf ein Sicherheitsproblem des Browsers zurückzuführen ist, was ist dann der alternative Weg, dies zu tun?
Einige Browser haben eine Sicherheitsfunktion, die verhindert, dass JavaScript den vollständigen lokalen Pfad Ihrer Datei kennt. Das ist sinnvoll, denn als Client möchte man nicht, dass der Server das Dateisystem des eigenen Rechners kennt. Es wäre schön, wenn dies bei allen Browsern der Fall wäre.
Ich bin auf das gleiche Problem gestoßen. Im IE8 konnte es durch das Erstellen einer versteckten Eingabe nach dem Datei-Eingabe-Steuerelement umgangen werden. Diese wird dann mit dem Wert des vorherigen Geschwisters gefüllt. Im IE9 wurde dies ebenfalls behoben.
Mein Grund, warum ich den vollständigen Pfad wissen wollte, war, eine Javascript-Bildvorschau vor dem Hochladen zu erstellen. Jetzt muss ich die Datei hochladen, um eine Vorschau des ausgewählten Bildes zu erstellen.
Wenn Sie wirklich den vollständigen Pfad der hochgeladenen Datei senden müssen, dann müssen Sie wahrscheinlich so etwas wie ein signiertes Java-Applet verwenden, da es keine Möglichkeit gibt, diese Informationen zu erhalten, wenn der Browser sie nicht sendet.