Gdy użytkownik wybierze plik na stronie internetowej, chcę mieć możliwość wyodrębnienia tylko nazwy pliku.
Wypróbowałem funkcję str.search, ale wydaje się, że kończy się to niepowodzeniem, gdy nazwa pliku jest taka: c: \ uploads \ ilike.this.file.jpg .
Jak możemy wyodrębnić tylko nazwę pliku bez rozszerzenia?
javascript
browser
extract
Yogi Yang 007
źródło
źródło
filename = filename.substring(0, filename.lastIndexOf('.'));
Ponieważ jego sposób zawiedzie przy rozszerzeniach większej liczby znaków niż 3, a więc: .html, .jpeg itp.var startIndex = Math.max(fullPath.lastIndexOf('\\'), fullPath.lastIndexOf('/')) + 1;
Aby podzielić ciąg ({filepath} / {filename}) i uzyskać nazwę pliku, możesz użyć czegoś takiego:
Przykład:
z:
"/home/user/file.txt".split(/(\\|\/)/g).pop()
dostajesz:
"file.txt"
źródło
var filename = filepath.replace(/^.*?([^\\\/]*)$/, '$1');
[\\/]
. Ponadto został poproszony o usunięcie rozszerzenia pliku. Aby uzyskać kompletne rozwiązanie, zobacz: stackoverflow.com/a/32156800/19163Obecnie jest znacznie prostszy sposób:
źródło
fileInput.files.length
zanim zadzwonisz.name
, na wypadek, gdyby użytkownik kliknął Anuluj.Bardzo prosty
źródło
Zarozumiały:
JavaScript wyglądałby następująco:
źródło
źródło
Zakładam, że chce się rozebrać wszystkie rozszerzenia, czyli
/tmp/test/somefile.tar.gz
dosomefile
.Bezpośrednie podejście z wyrażeniem regularnym:
Alternatywne podejście z operacjami regex i tablic:
źródło
Właśnie stworzyłem własną wersję tego. Moją funkcję można wykorzystać do wyodrębnienia z niej wszystkiego, co chcesz, jeśli nie potrzebujesz tego wszystkiego, możesz łatwo usunąć część kodu.
Wyświetli następujące informacje:
Z
&& nOffset+1 === str.length
dodatkiem doisDirectory
:Biorąc pod uwagę przypadki testowe, możesz zobaczyć, że ta funkcja działa dość solidnie w porównaniu z innymi proponowanymi tutaj metodami.
Uwaga dla początkujących na temat znaku \\: \ to znak zmiany znaczenia, na przykład \ n oznacza znak nowej linii i \ ta tabulator. Aby było możliwe pisanie \ n, musisz faktycznie wpisać \\ n.
źródło
&& eOffset < nOffset
).Wejście :
C:\path\Filename.ext
wyjście :
Filename
W kodzie HTML ustaw
onChange
wartość pliku w ten sposób ...Zakładając, że twój identyfikator pola tekstowego to `` wpName '' ...
JavaScript
źródło
Żadna z wysoko ocenianych odpowiedzi w rzeczywistości nie zawiera „tylko nazwy pliku bez rozszerzenia”, a inne rozwiązania zawierają zbyt dużo kodu, aby wykonać tak prostą pracę.
Myślę, że to powinno być jednowierszowe dla każdego programisty JavaScript. To bardzo proste wyrażenie regularne:
Najpierw usuń wszystko do ostatniego ukośnika, jeśli jest obecny.
Następnie usuń wszystko po ostatnim okresie, jeśli jest obecny.
Jest proste, solidne, implementuje dokładnie to, o co się prosi. Czy coś mi brakuje?
źródło
Jak usunąć rozszerzenie
źródło
źródło
Żadna z powyższych odpowiedzi nie zadziałała dla mnie, oto moje rozwiązanie, które aktualizuje wyłączone wejście o nazwę pliku:
źródło
Jeśli używasz jQuery to
źródło