出于安全原因,我之前也见过类似的问题,但最终没有解决方案。
但是今天,当我打开票证并将文件附加到后端时,我看到hostmonster已成功实现了此目的。
它同时适用于Firefox和IE(确切地说是版本8)。
我已经证实这完全是客户端脚本,没有发送请求(带有萤火虫)。
现在,我们可以重新考虑这个问题吗?
Answers:
您可以获取文件名,但不能获取完整的客户端文件系统路径。
尝试访问value
您文件input
上的属性change
事件。
大多数浏览器只会给您提供文件名,但是IE8之类的例外会给您提供伪路径,例如:"C:\fakepath\myfile.ext"
和旧版本(IE <= 6)会给您完整的客户端文件系统路径(由于缺少)安全性)。
document.getElementById('fileInput').onchange = function () {
alert('Selected file: ' + this.value);
};
C:\fakepath\...
使用chrome,但这对我来说很好。谢谢。
f = f.replace(/.*[\/\\]/, '');
您可以使用下面的代码:
JS
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);
};
的HTML
<body>
<p>
<input type="file" id="fileInput" multiple onchange="showname()"/>
</p>
</body>
刚刚经过测试,似乎可以在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>
C:\fakepath\background.jpg
。从字面上看。
我将通过到目前为止已测试的所有浏览器(IE8至IE11,Chrome,FF等)支持的简单Java脚本回答此问题。
这是代码。
function GetFileSizeNameAndType()
{
var fi = document.getElementById('file'); // GET THE FILE INPUT AS VARIABLE.
var totalFileSize = 0;
// VALIDATE OR CHECK IF ANY FILE IS SELECTED.
if (fi.files.length > 0)
{
// RUN A LOOP TO CHECK EACH SELECTED FILE.
for (var i = 0; i <= fi.files.length - 1; i++)
{
//ACCESS THE SIZE PROPERTY OF THE ITEM OBJECT IN FILES COLLECTION. IN THIS WAY ALSO GET OTHER PROPERTIES LIKE FILENAME AND FILETYPE
var fsize = fi.files.item(i).size;
totalFileSize = totalFileSize + fsize;
document.getElementById('fp').innerHTML =
document.getElementById('fp').innerHTML
+
'<br /> ' + 'File Name is <b>' + fi.files.item(i).name
+
'</b> and Size is <b>' + Math.round((fsize / 1024)) //DEFAULT SIZE IS IN BYTES SO WE DIVIDING BY 1024 TO CONVERT IT IN KB
+
'</b> KB and File Type is <b>' + fi.files.item(i).type + "</b>.";
}
}
document.getElementById('divTotalSize').innerHTML = "Total File(s) Size is <b>" + Math.round(totalFileSize / 1024) + "</b> KB";
}
<p>
<input type="file" id="file" multiple onchange="GetFileSizeNameAndType()" />
</p>
<div id="fp"></div>
<p>
<div id="divTotalSize"></div>
</p>
*请注意,我们显示的文件大小为KB(千字节)。要获得MB,请除以1024 * 1024,以此类推*。