使用jQuery来获取没有path的文件input的选定文件名

我用这个:

$('input[type=file]').val() 

以获取选定的文件名,但它返回完整path,如“C:\ fakepath \ filename.doc”中所示。 “假path”部分实际上是在那里 – 不知道是否应该是,但这是我第一次使用file upload的文件名。

我怎样才能得到文件名(filename.doc)?

 var filename = $('input[type=file]').val().split('\\').pop(); 

或者你可以这样做(因为它总是出于安全原因而添加的C:\fakepath ):

 var filename = $('input[type=file]').val().replace(/C:\\fakepath\\/i, '') 

你只需要做下面的代码。 第一个[0]是访问HTML元素,第二个[0]是访问file upload的第一个文件(我包括一个validation,如果没有文件):

  var filename = $('input[type=file]')[0].files.length ? ('input[type=file]')[0].files[0].name : ""; 

Chrome出于安全原因返回C:\fakepath\... – 网站不应该能够获取有关您的计算机的信息,例如计算机上文件的path。

为了得到一个string的文件名部分,你可以使用split()

 var file = path.split('\\').pop(); 

jsFiddle 。

…或正则expression式 …

 var file = path.match(/\\([^\\]+)$/)[1]; 

jsFiddle 。

…或者lastIndexOf()

 var file = path.substr(path.lastIndexOf('\\') + 1); 

jsFiddle 。

获得所有操作系统的path工作

 var filename = $('input[type=file]').val().replace(/.*(\/|\\)/, ''); 

 C:\fakepath\filename.doc /var/fakepath/filename.doc 

两者都返回

 filename.doc filename.doc 

这是我如何做,它运作得很好。

在你的HTML做:

 <input type="file" name="Att_AttributeID" onchange="fileSelect(event)" class="inputField" /> 

然后在你的js文件中创build一个简单的函数:

 function fileSelect(id, e){ console.log(e.target.files[0].name); } 

如果你正在做多个文件,你也应该能够通过循环来获取列表:

 e.target.files[0].name 

也许为了避免假道而增加一些内容:

 var fileName = $('input[type=file]').val(); var clean=fileName.split('\\').pop(); // clean from C:\fakepath OR C:\fake_path alert('clean file name : '+ fileName); 

这样的事情呢?

 var pathArray = $('input[type=file]').val().split('\\'); alert(pathArray[pathArray.length - 1]); 

它必须是jQuery吗? 或者你可以只使用JavaScript的本地yourpath.split("\\")将string拆分为数组?

从控件获取第一个文件,然后获取文件的名称,它将忽略在Chrome浏览器上的文件path,也将更正IE浏览器的path。 在保存文件时,必须使用System.io.Path.GetFileName方法才能获取仅用于IE浏览器的文件名

 var fileUpload = $("#ContentPlaceHolder1_FileUpload_mediaFile").get(0); var files = fileUpload.files; var mediafilename = ""; for (var i = 0; i < files.length; i++) { mediafilename = files[i].name; } 
 var filename=location.href.substr(location.href.lastIndexOf("/")+1); alert(filename);