<input type="file" id="file-id" name="file_name" onchange="theimage();">
Dies ist mein Upload-Button.
<input type="text" name="file_path" id="file-path">
Dies ist das Textfeld, in dem ich den vollständigen Pfad der Datei anzeigen 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 in der Warnung gibt mir Wert
C:\fakepath\test.csv
und Mozilla gibt mir:
test.csv
Aber ich möchte den lokalen vollqualifizierten Dateipfad . Wie kann ich dieses Problem beheben?
Wenn dies auf ein Sicherheitsproblem des Browsers zurückzuführen ist, wie sollte dies dann alternativ erfolgen?
javascript
html
dom
file-upload
e_maxm
quelle
quelle
browser security issue
~ Wenn es im Browser implementiert ist (zu Recht), ist es höchst unwahrscheinlich, dass Sie es umgehen könnenC:\fakepath
, so dass jetzt jeder meine Verzeichnisstruktur kennt.Antworten:
Einige Browser verfügen über eine Sicherheitsfunktion, die verhindert, dass JavaScript den lokalen vollständigen Pfad Ihrer Datei kennt. Es ist sinnvoll - als Client möchten Sie nicht, dass der Server das Dateisystem Ihres lokalen Computers kennt. Es wäre schön, wenn alle Browser dies tun würden.
quelle
c:\users\myname\desktop
oder/Users/myname/Desktop/
oder was auch immer). Das ist nichts, was ein Webserver geschäftlich weiß.Verwenden
anstatt
quelle
Ich verwende das Objekt FileReader für das Eingabeereignis
onchange
für Ihren Eingabedateityp! In diesem Beispiel wird die Funktion readAsDataURL verwendet. Aus diesem Grund sollten Sie ein Tag haben. Das FileReader-Objekt verfügt außerdem über readAsBinaryString, um die Binärdaten abzurufen, mit denen später dieselbe Datei auf Ihrem Server erstellt werden kannBeispiel:
quelle
Wenn Sie zu Internet Explorer, Extras, Internetoption, Sicherheit, Benutzerdefiniert wechseln, suchen Sie den Pfad "Lokales Verzeichnis beim Hochladen von Dateien auf einen Server einschließen" (dies ist ziemlich weit unten) und klicken Sie auf "Aktivieren". Das wird funktionieren
quelle
Ich bin froh, dass Browser uns vor aufdringlichen Skripten und Ähnlichem bewahren möchten. Ich bin nicht zufrieden damit, dass der IE etwas in den Browser einfügt, das eine einfache Stilkorrektur wie einen Hack-Angriff aussehen lässt!
Ich habe eine <span> verwendet, um die Dateieingabe darzustellen, damit ich anstelle der <Eingabe> (erneut aufgrund des IE) ein geeignetes Styling auf die <div> anwenden kann. Aus diesem Grund möchte der IE dem Benutzer einen Pfad mit einem Wert zeigen, der ihn garantiert auf der Hut hält und im geringsten besorgt ist (wenn nicht sogar völlig abschreckt ?!) ... MEHR IE-CRAP!
Trotzdem habe ich dank derer, die die Erklärung hier gepostet haben: IE-Browsersicherheit: Anhängen von "fakepath" an den Dateipfad in input [type = "file"] , ein kleines Fixer-Upper zusammengestellt ...
Der folgende Code bewirkt zwei Dinge: Er behebt einen IE8-Fehler, bei dem das onChange-Ereignis erst ausgelöst wird, wenn das Upload-Feld onBlur ist, und aktualisiert ein Element mit einem bereinigten Dateipfad, der den Benutzer nicht erschreckt.
quelle
Ich bin auf das gleiche Problem gestoßen. In IE8 könnte dies umgangen werden, indem nach dem Dateieingabesteuerelement eine versteckte Eingabe erstellt wird. Füllen Sie dies mit dem Wert des vorherigen Geschwisters. In IE9 wurde dies ebenfalls behoben.
Mein Grund, um den vollständigen Pfad kennenzulernen, war, vor dem Hochladen eine Javascript-Bildvorschau zu erstellen. Jetzt muss ich die Datei hochladen, um eine Vorschau des ausgewählten Bildes zu erstellen.
quelle
Wenn Sie wirklich den vollständigen Pfad der hochgeladenen Datei senden müssen, müssen Sie wahrscheinlich so etwas wie ein signiertes Java-Applet verwenden, da es keine Möglichkeit gibt, diese Informationen abzurufen, wenn der Browser sie nicht sendet.
quelle
Anscheinend können Sie nicht den vollständigen Pfad in Ihrem localhost von js finden, aber Sie können den falschen Pfad ausblenden, um nur den Dateinamen anzuzeigen. Verwenden Sie jQuery, um den ausgewählten Dateinamen der Dateieingabe ohne Pfad abzurufen
quelle
Verwenden Sie Dateireader:
quelle
Hy dort, in meinem Fall verwende ich asp.net Entwicklungsumgebung, also wollte ich diese Daten in asynchronus ajax Anfrage hochladen, in [webMethod] können Sie den Datei-Uploader nicht abfangen, da es kein statisches Element ist, also musste ich Machen Sie einen Umsatz für eine solche Lösung, indem Sie den Pfad festlegen, und konvertieren Sie dann das gewünschte Bild in Bytes, um es in der Datenbank zu speichern.
Hier ist meine Javascript-Funktion, hoffe es hilft dir:
hier nur zum testen:
quelle
Ergänzend zu Sardesh Sharmas Antwort:
Für vollen Weg.
quelle
undefined
in FireFox 75.0 zu mir zurück. Existiertpath
eigentlich? Haben Sie einen Hinweis auf die Dokumentation dazu?