javascript html - Verwenden Sie jQuery, um den ausgewählten Dateinamen der Dateieingabe ohne den Pfad abzurufen




6 Answers

var filename = $('input[type=file]').val().split('\\').pop();

oder Sie könnten es einfach tun (weil immer C:\fakepath aus Sicherheitsgründen hinzugefügt wird):

var filename = $('input[type=file]').val().replace(/C:\\fakepath\\/i, '')
funktion aufrufen

Ich habe das benutzt:

$('input[type=file]').val()

um den Dateinamen auszuwählen, aber es gab den vollständigen Pfad zurück, wie in "C: \ fakepath \ filename.doc". Der "fakepath" -Teil war tatsächlich da - nicht sicher, ob es sein sollte, aber das ist das erste Mal, dass ich mit dem Dateinamen von Datei-Uploads arbeite.

Wie kann ich nur den Dateinamen (Dateiname.doc) bekommen?




Chrome gibt C:\fakepath\... aus Sicherheitsgründen zurück - eine Website sollte keine Informationen zu Ihrem Computer C:\fakepath\... können, z. B. den Pfad zu einer Datei auf Ihrem Computer.

Um nur den Dateinamensteil einer Zeichenfolge zu erhalten, können Sie split() ... verwenden.

var file = path.split('\\').pop();

jsFiddle .

... oder ein regulärer Ausdruck ...

var file = path.match(/\\([^\\]+)$/)[1];

jsFiddle .

... oder lastIndexOf() ...

var file = path.substr(path.lastIndexOf('\\') + 1);

jsFiddle .




Hier ist, wie ich es mache, es funktioniert ziemlich gut.

In Ihrem HTML tun Sie:

<input type="file" name="Att_AttributeID" onchange="fileSelect(event)" class="inputField" />

Dann erstellen Sie in Ihrer js-Datei eine einfache Funktion:

function fileSelect(id, e){
    console.log(e.target.files[0].name);
}

Wenn Sie mehrere Dateien bearbeiten, sollten Sie die Liste auch durch Wiederholen der folgenden Liste abrufen können:

e.target.files[0].name



Wie wäre es mit so etwas?

var pathArray = $('input[type=file]').val().split('\\');
alert(pathArray[pathArray.length - 1]);



Rufen Sie die erste Datei aus dem Steuerelement ab, und rufen Sie dann den Namen der Datei ab. Der Dateipfad in Chrome wird ignoriert und der Pfad für IE-Browser wird korrigiert. Beim Speichern der Datei müssen Sie die Methode System.io.Path.GetFileName verwenden, um den Dateinamen nur für IE-Browser System.io.Path.GetFileName

var fileUpload    = $("#ContentPlaceHolder1_FileUpload_mediaFile").get(0); 
var files         =  fileUpload.files; 
var mediafilename = ""; 

for (var i = 0; i < files.length; i++) { 
  mediafilename = files[i].name; 
} 



<script type="text/javascript">

    $('#upload').on('change',function(){
       // output raw value of file input
       $('#filename').html($(this).val().replace(/.*(\/|\\)/, '')); 

        // or, manipulate it further with regex etc.
        var filename = $(this).val().replace(/.*(\/|\\)/, '');
        // .. do your magic

        $('#filename').html(filename);
    });
</script>



Related

javascript jquery get filenames