<script type="text/javascript">
function onUploadImgChange(fileInput) {
var filePath = fileInput.value;
var fileExt = filePath.substring(filePath.lastIndexOf("."))
.toLowerCase();
if (!checkFileExt(fileExt))
{
alert("您上传的文件不是图片,请重新上传!");
return;
}
//火狐
if (fileInput.files && fileInput.files[0]) {
//alert(fileInput);
// alert(fileInput.files[0])
// alert('你选择的文件大小' + fileInput.files[0].size);
if(fileInput.files[0].size>(2*1024*1024)){
alert('您上传的图片超过大小,请重新上传');
return;
}
//var xx = fileInput.files[0];
//for ( var i in xx) {
// alert(xx[i])
//}
} else {
var agent = window.navigator.userAgent;
var isIE7 = agent.indexOf('MSIE 7.0') != -1;
var isIE8 = agent.indexOf('MSIE 8.0') != -1;
//IE7和IE8获得文件路径
if (isIE7 || isIE8) {
fileInput.select();
var url = document.selection.createRange().text;
try {
var fso = new ActiveXObject("Scripting.FileSystemObject");
} catch (e) {
alert('如果你用的是ie 请将安全级别调低!');
}
//alert("文件大小为:" + fso.GetFile(url).size);
var ie_size = fso.GetFile(url).size;
}else{
//ie6
var oFileChecker = document.getElementById("fileChecker");
oFileChecker.src = filePath;
oFileChecker.onreadystatechange = function ()
{
if (oFileChecker.readyState == "complete")
{
var limit = 2 * 1024*1024;
//alert(oFileChecker.fileSize)
if (oFileChecker.fileSize > limit){
alert("您上传的图片超过大小,请重新上传");
}else{
//alert("ok");
}
}
}
}
if(ie_size>(2*1024*1024)){
alert('您上传的图片超过大小,请重新上传');
return;
}
}
}
function checkFileExt(ext)
{
if (!ext.match(/.jpg|.jpeg|.gif|.png|.bmp/i)) {
return false;
}
return true;
}
</script>
<!--验证图片用--->
<img src="about:blank" id="fileChecker" name="fileChecker" alt="test" style="display:none;" height="18"/>
<input type="file" onchange="onUploadImgChange(this)" value="浏 览">
客户端验证上传文件大小,在IE下面可以很简单,但是需要修改ActiveX安全设置。同时火狐不支持ActiveX。于是这个问题就变得棘手了。
解决这个问题的直接思路:1.获得文件路径以后使用AJAX验证文件大小;2.查看浏览器内部属性方法看看到底是否支持读取本地文件大小。
第一种思路:首先获取上传控件的值(这个值就是上传文件在本地的路径),通过AJAX在后台可以轻易的得到文件详细信息,之后再利用回调函数做一些
处理工作。这种思路的关键在于--如何得到这个文件路径。稍微有点经验的人都知道,通过上传控件的id.value是得不到真实的文件路径,ie7和
ie8在路径里面加入了fakepath(只能看见盘符、fakepath、文件名)而火狐更狠,直接得到的是文件名。当然上述结论对IE6无效。
于是这个思路还需要好好研究,探索一番发现IE7和IE8获得文件路径还是有方法的:fileupload.select();
var path=document.selection.createRange().text。
这
个方法还没有仔细研究,从字面上看似乎是先把控件选择,然后再通过某种方式把选中的值找出来。。。(~~,知道的人顺便告知下)。这下子就只需要搞定火狐
了。baidu发现火狐获取路径还很麻烦,涉及到编码问题,找了几个答案都说得不明不白。闲话一段:感觉搜索引擎搜索专业问题都很无能为力,baidu如
此,google也如此。不过这也说明了搜索引擎的未来还可以变得更好。无奈之下转向第二种思路:查看各浏览器的内部实现,看看是不是有什么方法或者属性
直接读取上传文件的大小。首先在IE8的开发人员工具下断点调试,对fileupload的属性和方法一个个的找,毫无悬念的无果。于是不免叹气,IE7
和IE8都居然对JS访问本地文件做出这么严格的限制,想当然地以为火狐肯定也不行!但是还是不死心,还是找找看。于是拿起FireBug又是一番调试,
果然皇天不负有心人,最后终于让哥找到了这个属性: var size=fileupload.files[0].fileSize;
原来火狐居然可以直接读出文件大小,令人惊叹啊!
分享到:
相关推荐
### js判断上传文件的大小(兼容火狐、谷歌、IE、360浏览器) 在Web开发中,经常需要处理用户上传文件的操作。为了确保服务器安全并优化用户体验,开发者需要对上传文件进行一定的预处理,例如限制文件大小。本文将...
以下是对"JS读取本地XML(支持IE和火狐和Google和Opea)"这个主题的详细讲解: 1. **FileReader API**: 浏览器提供了一个名为`FileReader`的API,允许我们读取用户选择的本地文件,包括XML文件。`FileReader`对象有...
这里我们将深入探讨标题中提到的`ie6`到`ie10`以及`Firefox`和`Google Chrome`浏览器的兼容性问题,以及它们所基于的`Gecko`和`WebKit`内核。 首先,`IE6`至`IE10`是微软公司推出的一系列Internet Explorer浏览器,...
这个WebUploader demo实例特别强调了对IE6及以上版本,以及Firefox和Chrome等主流浏览器的支持,确保在不同环境下都能实现稳定、高效的文件上传功能。 WebUploader的核心原理是利用HTML5的File API进行文件读取、...
8. **安全性**:为了防止恶意文件上传,开发者还需要进行安全检查,如限制文件类型、大小,甚至进行文件内容的安全扫描。 从提供的文件列表来看,“production”可能是一个生产环境的文件夹,包含了实现上述功能的...
由于项目需要,在网上找了一个JS判断上传文件大小的程序,经测试兼容IE6-9,Firefox10,Opera11.6,safari5.1,chrome17
"JS导入导出Excel 兼容IE、Firefox、Chrome等浏览器"这一技术主题,聚焦于如何使用JavaScript(JS)在各种浏览器环境下处理Excel文件,包括古老的Internet Explorer(IE)、Firefox以及Chrome。下面我们将深入探讨这...
本压缩包提供的是一款跨浏览器的JS日期控件,兼容IE、Firefox和Chrome这三种主流浏览器,为开发者提供了一种轻量级且易于使用的解决方案。 首先,我们来看一下"js日期控件"这个概念。JavaScript是一种广泛应用于...
它不仅支持HTML5的先进特性,如拖放上传,同时也为不支持HTML5的浏览器提供了回退方案,确保在谷歌、火狐以及不同版本的IE(包括6、7、8、9和10)等主流浏览器上的兼容性。 **1. 功能特性** - **多浏览器兼容**:...
2. **火狐和谷歌浏览器的PNG支持**:与IE6不同,Firefox和Chrome(谷歌浏览器)自早期版本起就很好地支持了PNG的完全透明,无论是PNG-8还是PNG-24格式,都可以正确地显示图像的alpha透明效果。 3. **解决IE6 PNG...
6. **测试和调试**:使用像BrowserStack这样的在线工具,或本地的虚拟机环境,进行跨浏览器测试,确保在各个版本的IE和Firefox上都能正常运行。 7. **利用社区资源**:查找和应用社区提供的已知解决方案,如GitHub...
6. **浏览器兼容性**:针对IE、Firefox和Chrome等不同浏览器,可能需要针对其特性进行特定的代码优化和适配。例如,对于IE,可能需要使用条件注释或polyfill来兼容旧版本的JavaScript API。 7. **响应式设计**:...
标题和描述提到的"swfupload上传控件demo"是一个示例项目,展示了如何在实际应用中集成SwfUpload,实现图片的上传和删除功能,并且兼容IE7及以上版本,以及Firefox和Google Chrome等主流浏览器。 SwfUpload的核心...
在现代Web开发中,文件上传是一个常见的功能,但要实现跨浏览器兼容性,尤其是在旧版本的Internet Explorer(如IE6、IE7、IE8、IE9)以及Firefox、Chrome和世界之窗等其他浏览器上,可能面临一些挑战。Ajax上传文件...
"JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)"是一个专门为JavaScript环境设计的,旨在解决跨浏览器兼容性问题的日期选择工具。这个组件的目标是确保在不同浏览器如Internet Explorer(IE)、Firefox、...
标题中的“Firefox支持OCX插件”意味着Mozilla Firefox这款开源网络浏览器可以运行OCX(ActiveX Control)组件,这是微软Windows平台下的一种交互式对象技术。通常,OCX插件用于增强网页的功能,如播放媒体、执行...
在任兼容ie6~ie9 firefox 谷歌”指的是一个基于jQuery实现的弹出对话框插件,它具有拖动功能,并且兼容Internet Explorer 6到9,以及Firefox和Google Chrome等现代浏览器。这个插件可能采用了jQuery的核心功能,如...
这个话题涉及到的主要技术是JavaScript,特别是如何使用JavaScript来实现跨浏览器(包括IE、Firefox和Google Chrome)的图片预览功能。下面将详细介绍这一知识点。 首先,我们需要理解浏览器对文件API的支持。现代...
对于其他浏览器如Firefox或360浏览器,可能需要对代码进行相应的调整,因为它们可能不支持所有相同的API或对象。务必遵循良好的编码实践,包括错误处理和兼容性检查,以确保代码在不同环境下的稳定性。 总的来说,...
在这个项目中,我们讨论的是如何使用这两种语言来创建一个可拖动的弹出层,并实现兼容IE7及以上版本,包括Firefox和Chrome在内的多种浏览器的锁屏效果。这个功能在网页应用中很常见,比如在显示模态对话框或提示信息...