Javascript - 如何从文件输入控件中提取文件名

IT技术 javascript browser extract
2021-02-01 14:34:08

当用户在网页中选择文件时,我希望能够仅提取文件名。

我确实尝试过 str.search 函数,但是当文件名是这样的时它似乎失败了:c:\uploads\ilike.this.file.jpg

我们如何只提取没有扩展名的文件名?

6个回答

要拆分字符串 ({filepath}/{filename}) 并获取文件名,您可以使用以下内容:

str.split(/(\\|\/)/g).pop()

“pop 方法从数组中删除最后一个元素并将该值返回给调用者。”
Mozilla 开发者网络

例子:

从: "/home/user/file.txt".split(/(\\|\/)/g).pop()

你得到: "file.txt"

多平台,简洁。伟大的。
2021-03-24 14:34:08
拆分正则表达式可以缩短为[\\/]. 此外,它还被要求剥离文件扩展名。有关完整的解决方案,请参阅:stackoverflow.com/a/32156800/19163
2021-03-30 14:34:08
vog 的答案非常接近问题的 100% 准确答案(除了需要去除扩展名。)文件名与任何其他字符串没有区别。
2021-04-08 14:34:08
很好的解决方案,我不明白它是如何工作的,这就是为什么更喜欢它!
2021-04-09 14:34:08
您也可以只使用正则表达式而不进行任何数组操作: var filename = filepath.replace(/^.*?([^\\\/]*)$/, '$1');
2021-04-10 14:34:08

假设你的<input type="file" >有一个 id上传这应该有希望做到这一点:

var fullPath = document.getElementById('upload').value;
if (fullPath) {
    var startIndex = (fullPath.indexOf('\\') >= 0 ? fullPath.lastIndexOf('\\') : fullPath.lastIndexOf('/'));
    var filename = fullPath.substring(startIndex);
    if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) {
        filename = filename.substring(1);
    }
    alert(filename);
}
谢谢这似乎工作得很好,但我只想要没有扩展名的文件名。我怎么能在上面的代码中做到这一点。
2021-03-18 14:34:08
我添加了这两行代码来提取没有扩展名的文件名:“filename = filename.substring(0,filename.length-4); filename = filename.toLowerCase();”
2021-03-23 14:34:08
不,你不想那样做 Yogi Yang 说的。而是使用:filename = filename.substring(0, filename.lastIndexOf('.'));因为他的方法会因扩展名超过 3 个字符而失败,因此:.html、.jpeg 等。
2021-03-25 14:34:08
如果选择多个文件,如何获取文件名?
2021-03-31 14:34:08
为什么不直接计算 startIndex 呢? var startIndex = Math.max(fullPath.lastIndexOf('\\'), fullPath.lastIndexOf('/')) + 1;
2021-04-11 14:34:08

现在有一个更简单的方法:

var fileInput = document.getElementById('upload');   
var filename = fileInput.files[0].name;
fileInput.files.length在调用之前检查.name,以防用户单击取消。
2021-04-05 14:34:08

很简单的

let file = $("#fileupload")[0].files[0]; 
file.name
如果您使用的是 TypeScript,那么它的 $("#fileupload")[0]["files"][0];
2021-04-05 14:34:08

假设:

<input type="file" name="file1" id="theFile">

JavaScript 将是:

var fileName = document.getElementById('theFile').files[0].name;