Ketika pengguna memilih file di halaman web, saya ingin dapat mengekstrak nama file saja.
Saya memang mencoba fungsi str.search tetapi tampaknya gagal ketika nama filenya seperti ini: c: \ uploads \ ilike.this.file.jpg .
Bagaimana kita bisa mengekstrak nama file saja tanpa ekstensi?
javascript
browser
extract
Yogi Yang 007
sumber
sumber
filename = filename.substring(0, filename.lastIndexOf('.'));
Karena caranya akan gagal dengan ekstensi karakter lebih dari 3, jadi: .html, .jpeg dll.var startIndex = Math.max(fullPath.lastIndexOf('\\'), fullPath.lastIndexOf('/')) + 1;
Untuk memisahkan string ({filepath} / {filename}) dan mendapatkan nama file Anda bisa menggunakan sesuatu seperti ini:
Contoh:
dari:
"/home/user/file.txt".split(/(\\|\/)/g).pop()
Anda mendapatkan:
"file.txt"
sumber
var filename = filepath.replace(/^.*?([^\\\/]*)$/, '$1');
[\\/]
. Selain itu, ia juga diminta untuk menghapus ekstensi file. Untuk solusi lengkap, lihat: stackoverflow.com/a/32156800/19163Saat ini ada cara yang jauh lebih sederhana:
sumber
fileInput.files.length
sebelum menelepon.name
, jika pengguna mengklik batal.Sangat sederhana
sumber
Asumsi:
JavaScriptnya adalah:
sumber
sumber
Saya berasumsi bahwa Anda ingin menghapus semua ekstensi, yaitu
/tmp/test/somefile.tar.gz
untuksomefile
.Pendekatan langsung dengan regex:
Pendekatan alternatif dengan operasi regex dan array:
sumber
Saya baru saja membuat versi saya sendiri. Fungsi saya dapat digunakan untuk mengekstrak apa pun yang Anda inginkan darinya, jika Anda tidak membutuhkan semuanya, maka Anda dapat dengan mudah menghapus beberapa kode.
Akan menampilkan yang berikut:
Dengan
&& nOffset+1 === str.length
ditambahkan keisDirectory
:Mengingat kasus uji, Anda dapat melihat fungsi ini bekerja cukup kuat dibandingkan dengan metode lain yang diusulkan di sini.
Catatan untuk pemula tentang \\: \ adalah karakter pelolosan, misalnya \ n berarti baris baru dan tab \ ta. Untuk memungkinkan penulisan \ n, Anda harus benar-benar mengetik \\ n.
sumber
&& eOffset < nOffset
).Masukan :
C:\path\Filename.ext
Keluaran :
Filename
Dalam kode HTML, atur nilai File
onChange
seperti ini ...Mengasumsikan id textfield Anda adalah 'wpName' ...
JavaScript
sumber
Tak satu pun dari jawaban yang sangat disukai benar-benar memberikan "hanya nama file tanpa ekstensi" dan solusi lainnya adalah kode yang terlalu banyak untuk pekerjaan sederhana seperti itu.
Saya pikir ini harus menjadi satu baris untuk setiap programmer JavaScript. Ini adalah ekspresi reguler yang sangat sederhana:
Pertama, lepaskan apa pun hingga garis miring terakhir, jika ada.
Kemudian, lepaskan apa pun setelah periode terakhir, jika ada.
Sederhana, kuat, menerapkan persis apa yang diminta. Apakah saya melewatkan sesuatu?
sumber
Bagaimana cara menghapus ekstensi
sumber
sumber
Tak satu pun dari jawaban di atas berfungsi untuk saya, berikut adalah solusi saya yang memperbarui input yang dinonaktifkan dengan nama file:
sumber
Jika Anda menggunakan jQuery maka
sumber