-1

我在我的网络应用程序中使用自定义文件上传按钮。我希望用户看到他们选择了一个文件,因此我更改了 div 的 html 以显示文件名。

这是我的jQuery:

$("input[type=file]").change(function() {
    var filename = $("input[type=file]").val();
    $("#share-file-name p").html(filename);
});

现在,这很好用,除了输入的值是:

C:\fakepath\photo.jpg

所以这就是用户所看到的。我只是想让他们看到“photo.jpg”部分。我如何使用我的 jquery 来删除除文件名之外的所有内容?

谢谢!

4

5 回答 5

2

这应该有效:

filename = filename.replace(/^.*[\/\\]/, "");
于 2013-07-09T21:26:04.440 回答
1

你可以砍掉最右边“/”左边的任何东西

像这样:

$("input[type=file]").change(function() {
    var filename = $("input[type=file]").val();
    // As pointed out in the comments, this line is required to make it
    // Windows compliant. It's important to handle paths from any OS.
    filename = filename.replace(/^.*[\\\/]/, '');
    $("#share-file-name p").html(filename);
});
于 2013-07-09T21:25:51.543 回答
1

如果您将完整的文件路径存储在变量filename中,则可以执行以下操作以仅获取文件名:

filename.substring(filename.lastIndexOf("\"))

正则表达式或 split 命令对于您正在尝试做的事情来说太过分了。

于 2013-07-09T21:26:24.747 回答
0

你可以使用这个正则表达式:

 filnameToDisplay = /([^\\]+.\w+$)/.exec(filename)[0];

无论文件路径的长度或文件名中的字符如何,这都会得到您想要的,除非他们使用我不知道的奇怪扩展名!

于 2013-07-09T21:33:57.090 回答
0

使用split("/");,然后你得到一个所有元素由 / 分隔的数组,所以最后一个元素将是文件名

var file = filepath.split("/"); file[file.length - 1] 
于 2013-07-09T21:25:36.150 回答