jquery在Chrome上获取输入文件值

jquery在Chrome上获取输入文件值,jquery,google-chrome,file-upload,onchange,Jquery,Google Chrome,File Upload,Onchange,当输入字段发生更改事件时,我尝试获取上载值 但我在Chrome上得到了这个值 C:\fakepath\winnie-the-pooh.jpg 因此,我将\和数组中的最后一项分开 jquery $("#upload").change(function(){ var fragment = $("#upload").val(); var array_fragment = fragment.split('\/'); alert($(array_fragment).last()

输入字段发生
更改事件时,我尝试获取上载值

但我在Chrome上得到了这个值

C:\fakepath\winnie-the-pooh.jpg
因此,我将
\
和数组中的最后一项分开

jquery

$("#upload").change(function(){

    var fragment = $("#upload").val();
    var array_fragment = fragment.split('\/');
    alert($(array_fragment).last()[0]);

});
但是我仍然得到了
C:\fakepath\winnie the pooh.jpg
而不是Chrome上的
winnie the pooh.jpg

我怎样才能使它工作

html

<input type="file" name="image" id="upload"/>

您需要在
\
上拆分,而不是
/

var array_fragment = fragment.split('\\');
不过,理想情况下,你会在这两个问题上分道扬镳。幸运的是,
split
采用正则表达式:

var array_fragment = fragment.split(/\\|\//);

regex的基本意思是“
\
/
”——管道操作符
是“或”,开头和结尾的
/
字符表示正则表达式介于两者之间。

您需要在
\
上拆分,而不是
//code>:

var array_fragment = fragment.split('\\');
不过,理想情况下,你会在这两个问题上分道扬镳。幸运的是,
split
采用正则表达式:

var array_fragment = fragment.split(/\\|\//);

regex的基本意思是“
\
/
”——管道操作符
是“or”,开头和结尾的
/
字符表示正则表达式介于两者之间。

你可以阅读我几个月前的帖子:


根据你的要求,你可以从那篇文章中得到一些东西

你可以阅读我几个月前问过的帖子:


根据你的要求,你可以从那篇文章中得到一些东西

您不需要jQuery来操作数组。此外,文件路径可能不包含斜杠,例如在Firefox上。考虑这个例子:

var filename = $("#upload").val().replace(/.+[\\\/]/, "");
alert(filename);

这比用jQuery包装数组只是为了得到它的最后一个元素要好。

不需要jQuery来操作数组。此外,文件路径可能不包含斜杠,例如在Firefox上。考虑这个例子:

var filename = $("#upload").val().replace(/.+[\\\/]/, "");
alert(filename);

这比用jQuery包装数组只是为了得到它的最后一个元素要好。

如果没有斜杠,那么
split
将返回一个包含一个元素(整个输入)的数组,因此最后一个元素仍然是文件名。尽管如此,我还是喜欢这个答案。通常越短越好。如果没有斜杠,则
split
将返回一个元素数组(整个输入),因此最后一个元素仍然是文件名。尽管如此,我还是喜欢这个答案。一般来说,越短越好。在chrome中无法获得完整路径。在chrome中无法获得完整路径。