Javascript - 如何从文件输入控件中提取文件名
当用户在网页中选择文件时,我希望能够仅提取文件名。
我确实尝试了 str.search 函数,但当文件名如下所示时似乎会失败:c:\uploads\ilike.this.file.jpg。
我们怎样才能只提取文件名而不提取扩展名呢?
When a user selects a file in a web page I want to be able to extract just the filename.
I did try str.search function but it seems to fail when the file name is something like this: c:\uploads\ilike.this.file.jpg.
How can we extract just the file name without extension?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
要分割字符串 ({filepath}/{filename}) 并获取文件名,您可以使用如下内容:
示例:
来自:
"/home /user/file.txt".split(/(\\|\/)/g).pop()
你得到:
"file.txt"
To split the string ({filepath}/{filename}) and get the file name you could use something like this:
Example:
from:
"/home/user/file.txt".split(/(\\|\/)/g).pop()
you get:
"file.txt"
现在有一种更简单的方法:
Nowadays there is a much simpler way:
假设您的 的 id 为 upload 这应该可以解决问题:
Assuming your <input type="file" > has an id of upload this should hopefully do the trick:
很简单
Very simple
假设:
JavaScript 是:
Assuming:
The JavaScript would be:
我假设您想删除所有扩展名,即
/tmp/test/somefile.tar.gz
到somefile
。使用正则表达式的直接方法:
使用正则表达式和数组操作的替代方法:
I assume you want to strip all extensions, i.e.
/tmp/test/somefile.tar.gz
tosomefile
.Direct approach with regex:
Alternative approach with regex and array operation:
输入:
C:\path\Filename.ext
输出:
文件名
在 HTML 代码中,设置文件
onChange
值,如下所示...假设您的文本字段 ID 为“wpName”...
JavaScript
Input:
C:\path\Filename.ext
Output:
Filename
In HTML code, set the File
onChange
value like this...Assuming your textfield id is 'wpName'...
JavaScript
我刚刚做了我自己的版本。 我的函数可用于从中提取您想要的任何内容,如果您不需要全部,那么您可以轻松删除一些代码。
将输出以下内容:
使用
&& nOffset+1 === str.length
添加到isDirectory
:给定测试用例,您可以看到与此处提出的其他方法相比,该函数的工作相当稳健。
新手请注意 \\: \ 是转义字符,例如 \n 表示换行符,\ta 表示制表符。 为了能够写入 \n,您必须实际键入 \\n。
I just made my own version of this. My function can be used to extract whatever you want from it, if you don't need all of it, then you can easily remove some code.
Will output the following:
With
&& nOffset+1 === str.length
added toisDirectory
:Given the testcases you can see this function works quite robustly compared to the other proposed methods here.
Note for newbies about the \\: \ is an escape character, for example \n means a newline and \t a tab. To make it possible to write \n, you must actually type \\n.
这两个高度赞扬的答案实际上都没有提供“只提供没有扩展名的文件名”,而其他解决方案对于这样一个简单的工作来说代码太多了。
我认为这对于任何 JavaScript 程序员来说都应该是一句口头禅。 这是一个非常简单的正则表达式:
首先,删除最后一个斜线之前的所有内容(如果存在)。
然后,删除最后一个句点之后的所有内容(如果有)。
它很简单,很强大,它完全实现了所要求的功能。 我错过了什么吗?
Neither of the highly upvoted answers actually provide "just the file name without extension" and the other solutions are way too much code for such a simple job.
I think this should be a one-liner to any JavaScript programmer. It's a very simple regular expression:
First, strip anything up to the last slash, if present.
Then, strip anything after the last period, if present.
It's simple, it's robust, it implements exactly what's asked for. Am I missing something?
简单路径:
JQuery
JavaScript
Easy Path:
JQuery
JavaScript
如何删除扩展
How to remove the extension
以上答案都不适合我,这是我的解决方案,它使用文件名更新禁用的输入:
None of the above answers worked for me, here is my solution which updates a disabled input with the filename:
如果你使用 jQuery 那么
If you are using jQuery then