使用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);