Quando um usuário seleciona um arquivo em uma página da web, desejo extrair apenas o nome do arquivo.
Eu tentei a função str.search, mas parece falhar quando o nome do arquivo é algo assim: c: \ uploads \ ilike.this.file.jpg .
Como podemos extrair apenas o nome do arquivo sem extensão?
javascript
browser
extract
Yogi Yang 007
fonte
fonte
filename = filename.substring(0, filename.lastIndexOf('.'));
Porque seu caminho falhará com extensões de mais caracteres do que 3, assim: .html, .jpeg etc.var startIndex = Math.max(fullPath.lastIndexOf('\\'), fullPath.lastIndexOf('/')) + 1;
Para dividir a string ({filepath} / {filename}) e obter o nome do arquivo, você pode usar algo assim:
Exemplo:
de:
"/home/user/file.txt".split(/(\\|\/)/g).pop()
você obtém:
"file.txt"
fonte
var filename = filepath.replace(/^.*?([^\\\/]*)$/, '$1');
[\\/]
. Além disso, foi solicitada a remoção da extensão do arquivo também. Para obter uma solução completa, consulte: stackoverflow.com/a/32156800/19163Hoje em dia existe uma maneira muito mais simples:
fonte
fileInput.files.length
antes de ligar.name
, caso o usuário tenha clicado em cancelar.Muito simples
fonte
Supondo:
O JavaScript seria:
fonte
fonte
Presumo que você deseja remover todas as extensões, ou seja,
/tmp/test/somefile.tar.gz
parasomefile
.Abordagem direta com regex:
Abordagem alternativa com regex e operação de array:
fonte
Acabei de fazer minha própria versão disso. Minha função pode ser usada para extrair o que você quiser dela, se você não precisar de tudo, então você pode remover facilmente algum código.
Irá produzir o seguinte:
Com
&& nOffset+1 === str.length
adicionado aisDirectory
:Dados os casos de teste, você pode ver que essa função funciona de maneira bastante robusta em comparação com os outros métodos propostos aqui.
Nota para iniciantes sobre o \\: \ é um caractere de escape, por exemplo \ n significa uma nova linha e \ ta tab. Para tornar possível escrever \ n, você deve realmente digitar \\ n.
fonte
&& eOffset < nOffset
).Entrada :
C:\path\Filename.ext
Saída :
Filename
No código HTML, defina o
onChange
valor do arquivo como este ...Supondo que seu id de campo de texto seja 'wpName' ...
JavaScript
fonte
Nenhuma das respostas altamente votadas realmente fornecem "apenas o nome do arquivo sem extensão" e as outras soluções são código demais para um trabalho tão simples.
Eu acho que isso deve ser uma linha para qualquer programador de JavaScript. É uma expressão regular muito simples:
Primeiro, retire tudo até a última barra, se houver.
Em seguida, retire qualquer coisa após a última menstruação, se houver.
É simples, é robusto, implementa exatamente o que é pedido. Estou esquecendo de algo?
fonte
Como remover a extensão
fonte
fonte
Nenhuma das respostas acima funcionou para mim, aqui está minha solução que atualiza uma entrada desativada com o nome do arquivo:
fonte
Se você estiver usando jQuery, então
fonte