Javascript 如何在用户通过<;选择文件时获取文件名;输入类型=";文件"/>;?
我以前见过类似的问题,由于安全原因,最终没有解决方案 但今天我看到hostmonster已经成功地实现了这一点,当我打开一个票证并在其后端附加一个文件时 它同时适用于firefox和IE(确切地说是第8版) 我已经验证了它完全是客户端脚本,没有发送任何请求(使用firebug) 现在,我们可以重新考虑这个问题了吗?您可以获取文件名,但无法获取完整的客户端文件系统路径 在Javascript 如何在用户通过<;选择文件时获取文件名;输入类型=";文件"/>;?,javascript,html,file,Javascript,Html,File,我以前见过类似的问题,由于安全原因,最终没有解决方案 但今天我看到hostmonster已经成功地实现了这一点,当我打开一个票证并在其后端附加一个文件时 它同时适用于firefox和IE(确切地说是第8版) 我已经验证了它完全是客户端脚本,没有发送任何请求(使用firebug) 现在,我们可以重新考虑这个问题了吗?您可以获取文件名,但无法获取完整的客户端文件系统路径 在change事件中,尝试访问文件input的value属性 大多数浏览器只提供文件名,但也有例外情况,如IE8,它会提供一个伪路
change
事件中,尝试访问文件input
的value
属性
大多数浏览器只提供文件名,但也有例外情况,如IE8,它会提供一个伪路径,如:
“C:\fakepath\myfile.ext”
和更旧的版本(IE刚刚测试过这样做,它似乎在firefox&IE中工作)
<html>
<head>
<script type="text/javascript">
function alertFilename()
{
var thefile = document.getElementById('thefile');
alert(thefile.value);
}
</script>
</head>
<body>
<form>
<input type="file" id="thefile" onchange="alertFilename()" />
<input type="button" onclick="alertFilename()" value="alert" />
</form>
</body>
</html>
函数alertFilename()
{
var thefile=document.getElementById('thefile');
警报(文件值);
}
我将通过迄今为止我测试过的所有浏览器(IE8到IE11、Chrome、FF等)都支持的简单Javascript来回答这个问题
这是代码
函数GetFileSizeNameAndType()
{
var fi=document.getElementById('file');//将文件输入作为变量获取。
var totalFileSize=0;
//验证或检查是否选择了任何文件。
如果(fi.files.length>0)
{
//运行循环以检查每个选定文件。
对于(var i=0;i您可以使用下一个代码: JS HTML
你所说的“获取文件名”是什么意思?文件名不是很明显,因为用户刚刚选择了它吗?我在chrome中获取了C:\fakepath\…
,但出于我的目的,这是很好的。谢谢。这是出于安全原因。网站不能了解用户的文件夹路径。可以这样清理:f=f.replace(/.[\/\]/,“”)
在IE中呢?在处理函数中捕获事件,然后使用evt.target.files[0].name。这很有趣。当我这样做时,我会得到C:\fakepath\background.jpg
。实际上就是这样。
<html>
<head>
<script type="text/javascript">
function alertFilename()
{
var thefile = document.getElementById('thefile');
alert(thefile.value);
}
</script>
</head>
<body>
<form>
<input type="file" id="thefile" onchange="alertFilename()" />
<input type="button" onclick="alertFilename()" value="alert" />
</form>
</body>
</html>
function showname () {
var name = document.getElementById('fileInput');
alert('Selected file: ' + name.files.item(0).name);
alert('Selected file: ' + name.files.item(0).size);
alert('Selected file: ' + name.files.item(0).type);
};
<body>
<p>
<input type="file" id="fileInput" multiple onchange="showname()"/>
</p>
</body>