求一段获取上传文件大小的js代码

hui135 2011-02-24 06:10:01
如题,我想<input type="file" id="file" oncchange="check()">要一个check()函数的代码,能获取上传文件的大小,这样我就能在客户端判断上传文件是否超过最大值。要IE8能用的。我在google上找到一段代码,但在IE8上是不可用的,我设置过“对为标记为安全的ActiveX空间的初始化并可执行”为启动,在IE6上可用。以下是我找的代码:
function getFileSize(fileObj) { 
if (document.all) {
window.oldOnError = window.onerror;
window.onerror = function(err) {
if (err.indexOf('utomation') != -1) {
alert('No access to the file permissions.');
return true;
}
else
return false;
};
var fso = new ActiveXObject('Scripting.FileSystemObject');
var file = fso.GetFile(fileName);
window.onerror = window.oldOnError;
return file.Size;
}
}



我发现126邮箱里添加附件,就可以获取文件大小,但是找不到那段js代码。请大侠们帮帮忙吧!
当然,有自己的解决办法也可以。

附:本来我可以将IE8换成IE6,但是后来一想,难道别个为了用我的程序还得装个IE6,那不是太搞笑了,而且google了那么多页,都是千篇一律,希望能在这里找到一个不错的解决方法
...全文
4880 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng2323 2012-06-21
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 的回复:]

把控件都开启,就没事了
[/Quote]
这个不现实。你不能要求每个访问的都用户这样去做,而且绝大多数的人都不懂这些。
逍遥猫 2011-12-26
  • 打赏
  • 举报
回复
把控件都开启,就没事了
kavi 2011-08-04
  • 打赏
  • 举报
回复
kavi 2011-08-04
  • 打赏
  • 举报
回复
http://xbyy123.iteye.com/blog/1140174 看看这个
Inhibitory 2011-02-25
  • 打赏
  • 举报
回复
使用ajax通信,放到后台去做试试
hui135 2011-02-25
  • 打赏
  • 举报
回复
woshigaoshou980大侠:你给的几种方法在IE8上都要不得哈,我早试过了。

我觉得网易和腾讯都是按照下面这样实现的。好像是用ajax。不过还不会,郁闷。

[Quote=引用 7 楼 xieshengjun2009 的回复:]
我原来做上传文件的时候也没在前台实现获取js大小;
建议楼主从后台获取文件大小后,再返回给前台,前台取值就行了!
[/Quote]
  • 打赏
  • 举报
回复
万一没法,就后天程序处理,传一个值过来 ,页面读取显示就OK .我昏
yukiMark 2011-02-25
  • 打赏
  • 举报
回复
我用的IE8 都 不行
zn85600301 2011-02-25
  • 打赏
  • 举报
回复
我也记得前台不好做 最后放弃放在action进去判断了~~
  • 打赏
  • 举报
回复
用的来不嘛
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 how8586 的回复:]

无论是图片还是文件都不行
[/Quote]


你们惑哥哥哦,

<script type="text/javascript">
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>




都不行?我把它吃啦
yukiMark 2011-02-25
  • 打赏
  • 举报
回复
无论是图片还是文件都不行
yukiMark 2011-02-25
  • 打赏
  • 举报
回复
无法设置 dynsrc 属性。 拒绝访问。
  • 打赏
  • 举报
回复
哎呀, 我再给一个最简单的 方法,

<script type="text/javascript">
function getFileSize(filePath)
{
var image=new Image();
image.dynsrc=filePath;
alert(image.fileSize);
}
</script>
<body>
<INPUT TYPE="file" NAME="file" SIZE="30" onchange="getFileSize(this.value)">
</body>




yukiMark 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 woshigaoshou980 的回复:]
JS判断上传文件大小

HTML code

<input type="file" id="fileText">
<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">


<script type="text/ja……
[/Quote] 在 var fileobject = new ActiveXObject ("Scripting.FileSystemObject"); 处提示服务器不能创建对象,这是怎么回事 ?
  • 打赏
  • 举报
回复
方法三、
<input type="text" size="4" value="10" name="filesizelimit" id="filesizelimit"/> k
<input type="file" name="file1" id="file1" size="40" onchange="changesrc(this)"/>
<img src="about:blank" id="filechecker" alt="test" height="18"/>

<script type="text/javascript">
var ofilechecker = document.getelementbyid("filechecker");

function changesrc(filepicker)
{
ofilechecker.src = filepicker.value;
}

ofilechecker.onreadystatechange = function ()
{
if (ofilechecker.readystate == "complete")
{
checksize();
}
}

function checksize()
{
var limit = document.getelementbyid("filesizelimit").value * 1024;

if (ofilechecker.filesize > limit)
{
alert("too large");
}
else
{
alert("ok");
}
}
</script>

  • 打赏
  • 举报
回复


<script language="JavaScript">
<!--
function ShowSize(files)
{
var fso,f;
fso=new ActiveXObject("Scripting.FileSystemObject");
f=fso.GetFile(files);
var fileSize = f.size ;
if((fileSize/1024) < 1024){
alert(fileSize/1024+"K");
}else if( ((fileSize/1024) > 1024) && ((fileSize/(1024*1024)) < 1024)){
alert(fileSize/(1024*1024)+"M");
}else{
alert(fileSize/(1024*1024*1024)+"G")
}
}
//-->
</script>


  • 打赏
  • 举报
回复

JS判断上传文件大小

<input type="file" id="fileText">
<input type="button" value="检查文件大小" onclick="checkFileChange(document.getElementById('fileText'));">


<script type="text/javascript">
var Sys = {};
if(navigator.userAgent.indexOf("MSIE")>0)
{
Sys.ie=true;
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0)
{
Sys.firefox=true;
}

function checkFileChange(obj)
{
var filesize = 0;

if(Sys.firefox)
{
filesize = obj.files[0].fileSize;
}else if(Sys.ie)
{
var fileobject = new ActiveXObject ("Scripting.FileSystemObject");//获取上传文件的对象
var file = fileobject.GetFile (document.getElementById("fileText").value);//获取上传的文件
var filesize = file.Size;//文件大小
}
alert(filesize);
}
</script>

xieshengjun2009 2011-02-25
  • 打赏
  • 举报
回复
我原来做上传文件的时候也没在前台实现获取js大小;
建议楼主从后台获取文件大小后,再返回给前台,前台取值就行了!
无水先生 2011-02-25
  • 打赏
  • 举报
回复
同意12楼意见.
加载更多回复(6)

67,543

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧