如何在客户端使用HTML和Javascript验证文件大小
如何使用JavaScript在客户端验证文件大小?我正在使用如何在客户端使用HTML和Javascript验证文件大小,javascript,html,Javascript,Html,如何使用JavaScript在客户端验证文件大小?我正在使用type=file选择文件更新2013 在本次编辑中,文件API在所有主要浏览器中都受支持,并且从版本10开始在IE中受支持 如果您仍然需要支持IE9及以下版本,您可能仍然希望使用SWFUpload,尽管在这一点上,它可能更像是一种退路,因为html5文件api在SWFUpload无法到达的移动平台上提供支持。html5文件api基于firefox的文件api,如下所述 另见此重复问题 更新:Firefox已将其API更改为 你可以
type=file
选择文件更新2013
在本次编辑中,文件API在所有主要浏览器中都受支持,并且从版本10开始在IE中受支持
如果您仍然需要支持IE9及以下版本,您可能仍然希望使用SWFUpload,尽管在这一点上,它可能更像是一种退路,因为html5文件api在SWFUpload无法到达的移动平台上提供支持。html5文件api基于firefox的文件api,如下所述
另见此重复问题
更新:Firefox已将其API更改为
你可以在firefox中这样做
html:
如果在IE中有这样做的方法,我不知道。它可能涉及activeX或其他类似的垃圾
编辑:
我在IE中找到了这个,怎么做
<head>
<script>
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>
函数getSize()
{
var myFSO=新的ActiveXObject(“Scripting.FileSystemObject”);
var filepath=document.upload.file.value;
var thefile=myFSO.getFile(文件路径);
变量大小=文件大小;
警报(大小+字节);
}
也许您可以改用它,它是一个小型闪存应用程序,为您处理上传的客户端。从其功能列表中:
- 通过在对话框中按住ctrl/shift键同时上载多个文件
- 所有事件的Javascript回调
- 开始上传前获取文件信息
- 使用XHTML和css设置上载元素的样式
- 使用HTML上载文件时显示信息
- 无需重新加载页面
- 适用于所有支持Flash的平台/浏览器
- 如果Flash或javascript不可用,则会优雅地降级为正常的HTML上载形式
- 上传开始前控制文件大小
- 仅在对话框中显示选定的文件类型
- 队列上载,在开始上载之前删除/添加文件
<script type="text/javascript">
function checkBrowser()
{
if(navigator.appName == "WebTV")
{
alert("You're using the WebTV browser.")
}
if(navigator.appName == "Netscape")
{
checkFileSizeFF();
}
if(navigator.appName == "Microsoft Internet Explorer")
{
checkFileSizeIE();
}
}
function checkFileSizeFF()
{
var filesize = document.forms[0].file.files[0].fileSize;
alert(filesize/(1024*1024) + " MB");
}
function checkFileSizeIE()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size/(1024*1024);
alert(size + "MB");
}
</script>
<form action="" method="get" accept-charset="utf-8" name="upload">
<input type="file" name="file" value="" id="file">
<p><input type="submit" value="Continue →" onclick="checkBrowser()"></p>
</form>
<div id="example"></div>
函数checkBrowser()
{
如果(navigator.appName==“WebTV”)
{
警报(“您正在使用WebTV浏览器。”)
}
如果(navigator.appName==“Netscape”)
{
checkFileSizeFF();
}
如果(navigator.appName==“Microsoft Internet Explorer”)
{
checkFileSizeIE();
}
}
函数checkFileSizeFF()
{
var filesize=document.forms[0]。file.files[0]。filesize;
警报(文件大小/(1024*1024)+“MB”);
}
函数checkFileSizeIE()
{
var myFSO=新的ActiveXObject(“Scripting.FileSystemObject”);
var filepath=document.upload.file.value;
var thefile=myFSO.getFile(文件路径);
变量大小=文件大小/(1024*1024);
警报(大小+“MB”);
}
+1虽然这是一种很好的方法(使用最初的问题所涉及的Javascript),但您实际上只是在为两种浏览器创建一个解决方案。当然,这是两种最流行的浏览器,但如果您需要多个浏览器/平台支持,则可能很难实现。Javascript不能替代检查服务器上的文件大小。如果目标只是为了节省一些资源,那么我认为这个目标是可能的。我完全同意布雷顿的观点,如果你真的想确定的话,你应该经常检查文件服务器端。例如,这可能包括检查上传图像的尺寸,或防止上传(或至少保存)动画GIF。当处理客户端代码(如Javascript)时,客户端永远不会100%可信。我不知道浏览器会公开此类信息。有趣。这个答案需要很多注意事项才能在总体上有用。1) IE需要将站点插入到“受信任站点”列表中,以避免出错。如果你想复制/粘贴其他页面的内容,先做一些研究2)这只是在FF3中介绍的3)而且fileSize
已经被弃用()
<head>
<script>
function getSize()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size;
alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>
<script type="text/javascript">
function checkBrowser()
{
if(navigator.appName == "WebTV")
{
alert("You're using the WebTV browser.")
}
if(navigator.appName == "Netscape")
{
checkFileSizeFF();
}
if(navigator.appName == "Microsoft Internet Explorer")
{
checkFileSizeIE();
}
}
function checkFileSizeFF()
{
var filesize = document.forms[0].file.files[0].fileSize;
alert(filesize/(1024*1024) + " MB");
}
function checkFileSizeIE()
{
var myFSO = new ActiveXObject("Scripting.FileSystemObject");
var filepath = document.upload.file.value;
var thefile = myFSO.getFile(filepath);
var size = thefile.size/(1024*1024);
alert(size + "MB");
}
</script>
<form action="" method="get" accept-charset="utf-8" name="upload">
<input type="file" name="file" value="" id="file">
<p><input type="submit" value="Continue →" onclick="checkBrowser()"></p>
</form>
<div id="example"></div>