Meloloskan backslash dalam string - javascript

Saya perlu menampilkan nama file yang sedang dipilih (dalam elemen <input type="file">).

Semuanya baik-baik saja, satu-satunya masalah adalah saya mendapatkan string seperti ini "C:\fakepath \typog_rules.pdf" (browset secara otomatis menempatkan ini sebagai nilai untuk elemen input).

Ketika saya mencoba untuk membagi string dengan '\' atau '\\', gagal karena garis miring yang tidak terkecuali. Upaya untuk mencocokkan/mengganti garis miring juga gagal. Apakah ada cara untuk mengatasi hal ini? Saya membutuhkan ini untuk bekerja setidaknya di Opera dan IE (karena di browser lain saya dapat menggunakan FileReader)

E.G. Saya mendapatkan "C:\fakepath\typog_rules.pdf" sebagai input dan ingin mendapatkan "typog_rules.pdf" sebagai output.

Larutan

Untuk alasan keamanan, tidak mungkin untuk mendapatkan jalur lengkap yang sebenarnya dari sebuah file, yang dirujuk melalui elemen &<input type="file" />.

Pertanyaan ini sudah menyebutkan, dan menautkan ke pertanyaan-pertanyaan Stack Overflow lainnya mengenai topik ini.


*Jawaban sebelumnya, disimpan sebagai referensi untuk pengunjung yang akan datang yang mencapai halaman ini melalui judul, tag dan pertanyaan.*
Backslash harus diekskresikan.
string = string.split("\\");

Dalam JavaScript, backslash digunakan untuk menghindari karakter khusus, seperti baris baru (\n). Jika Anda ingin menggunakan backslash literal, backslash ganda harus digunakan.

Jadi, jika Anda ingin mencocokkan dua backslash, empat backslash harus digunakan. Sebagai contoh, alert("\\\\") akan menampilkan dialog yang mengandung dua garis miring.

Komentar (12)

Saya pikir ini lebih dekat dengan jawaban yang Anda cari:

<input type="file">

$file = $(file);
var filename = fileElement[0].files[0].name;
Komentar (1)

Melarikan diri dari karakter backslash.

foo.split('\\')
Komentar (1)