我正在ASP.NET中的一个项目,我想在其中使用JavaScript获取文件大小.实际上,我得到了解决方案,就像下面这样
<script language="javascript">
var Fo =new ActiveXObject("Scripting.FileSystemObject");
var fileName=new String();
function Trim(input)
{
var lre = /^\s*/;
var rre = /\s*$/;
input = input.replace(lre, "");
input = input.replace(rre, "");
return input;
}
function getSize(filePath)
{
try
{
var thefile = Fo.getFile(filePath);
var size = thefile.size;
return size;
}
catch(err){}
}
function getType(filePath)
{
try
{
var thefile = Fo.getFile(filePath);
var fileType = thefile.type;
return fileType;
}
catch(err){}
}
function ShowErrorPnl(tblPnl)
{
document.getElementById(tblPnl).style.visibility='visible';
document.getElementById(tblPnl).style.backgroundColor='Yellow';
document.getElementById(tblPnl).style.borderColor='Silver';
}
function UploadFile_CheckType(fileUploadCtrl,messageCtrl,hFieldCtrl,tblPnl)
{
try
{
var file = document.getElementById(fileUploadCtrl);
var fileName=file.value;
document.getElementById(messageCtrl).innerText='';
document.getElementById(tblPnl).style.visibility='hidden';
document.getElementById(hFieldCtrl).value=''; // File can be uploaded.
//Checking for file browsed or not
if((getSize(fileName)/1024)>500)
{
document.getElementById(messageCtrl).innerText=' File size is exceeding 500K';
document.getElementById(hFieldCtrl).value='0'; // File cannot upload.
ShowErrorPnl(tblPnl);
file.focus();
return false;
}
if(getType(fileName)!='Microsoft Office Word 97 - 2003 Document' &&
getType(fileName)!='Adobe Acrobat Document')
{
document.getElementById(messageCtrl).innerText=
(document.getElementById(messageCtrl).innerText=='' ?
' Only Doc and pdf file can be upload!!!' :
document.getElementById(messageCtrl).innerText +
'\n'+' Only Doc and pdf file can be upload!!!');
ShowErrorPnl(tblPnl);
document.getElementById(hFieldCtrl).value='0'; // File cannot upload.
file.focus();
return false;
}
}
catch(err){}
}
</script>
Run Code Online (Sandbox Code Playgroud)
除非在Internet Explorer属性中进行一些设置,否则它的工作正常.
在Internet属性 - >选择安全选项卡 - >本地Internet - >单击自定义级别按钮 - >初始化和脚本未标记为可安全执行脚本的ActiveX控件 - >启用它
保存设置并执行程序.
这是有效的,但我想在不使用的情况下获取文件大小 var Fo =new ActiveXObject("Scripting.FileSystemObject");
网页上的JavaScript不应该访问本地文件系统.允许访问将是一个巨大的安全漏洞.而且您不能指望您的用户像这样打开他们的系统.
作为一种繁琐的解决方法,使用文件控件("<input type ="file">")创建一个表单,让用户选择文件,将其上传到服务器,让服务器返回文件大小.
在HTML5中,您将能够访问在文件控件中选择的文件.仍然没有任意文件系统访问权限,但至少你可以使用用户为你选择的文件.
编辑:为了避免网络往返,您可以发送一个Java小程序(不是JavaScript!)实现简单的HTTP服务器,仅用于文件大小计算,然后将文件发布到localhost和applet的服务器侦听的任意端口上.然而,另外一堆蠕虫会打开 - Java VM,"你信任这个小程序吗?" Windows,阻止侦听端口的安全软件等
| 归档时间: |
|
| 查看次数: |
4467 次 |
| 最近记录: |