js前台检测上传图片大小的总结
最近一直在做上传图片的前端检测,不通过后台就完成这个动作。但实际是,实际效果差强人意。
html5的fileApi出来后,对文件的处理才变得方便了些,对它的简单介绍可以看我的前面的博客。现在支持的浏览器有(File API在Firefox,Chrome,Safari和Opera中得到了全面实现.而IE10和Android部分支持这个API.FileReader API在IE10和所有其他桌面浏览器,以及WebKit移动浏览空对空中得到了全面实现,其中包括Android3.0及以上版本)。支持的范围还是蛮好的。
接下来想做ie低版本的兼容,然而纯前台实现真的没有方法。网上方法有几种,理论上似乎可行,但真正在服务器上运行就歇菜了。
1、通过新建img图像对象方式
obj.select();//obj是input上传控件对象
obj.blur();
var nfile = document.selection.createRange().text;
var _src = nfile.replace(/\\/g,'/');
//EventUtil.addHandler(img,'load',function(event){//监听图像加载完成
// img.onreadystatechange=function(){//同上
img.onload=function() {//同上
if(img.readyState == "loaded" || img.readyState == "complete") {
alert(img.fileSize);
}
}
img.src = _src;
document.selection.empty();
这种方式在本地还行,放到服务器上面,ie8上面得到的反馈就是图像对象没有初始化。也就是说服务器端根本就访问不了图片,这也不奇怪了。
2、通过ie activeX方式
var fileSystem = new ActiveXObject("Scripting.FileSystemObject");
var file = fileSystem.GetFile (filePath); //filePath文件路径
fileSize = file.Size;
这种方式服务器ie8得到的反馈是产生Automation 服务器不能创建对象,那是一个坑爹。
3、通过dynsrc的方式
var img=new Image();
obj_img.DYNSRC=obj_file.value;
filesize = obj_img.fileSize;
这种方式服务器ie8下报没有这个属性,不支持。
这三种方式ie9好像也不行,也没有再测了。
后来用了一个uplodify插件,但这个其实就是后台处理了。这个还是蛮不错的,测试都能检测到。
ps:
知乎上面的讨论差不多就是js检测大小的现状,
http://www.zhihu.com/question/21073708
还有2个网页可以作为参考,对新手有不少的帮助:
http://www.iteye.com/topic/137984
http://www.iteye.com/problems/38339
js前台检测上传图片大小的总结的更多相关文章
- js前台实现上传图片的预览
网上这样的插件一大堆,不过还是谈下js下代码的实现,加深这方面的理解. 当然也没有一种方式就可以完事的情形,主要就两种方面来处理: 1.file API的filereader接口完成(支持的浏览器:I ...
- JS前台base32加密,C#后台解码
公司的系统应用后,客户那边用appscan工具检测到严重的漏洞 1.使用 SQL 注入的认证旁路 (1/2)--未对用户输入正确执行危险字符清理 2.已解密的登录请求 (2/2)----诸如用户名.密 ...
- Javascript 验证上传图片大小[客户端验证]
需求分析: 在做上传图片的时候,如果不限制上传图片大小,后果非常的严重.那么我们怎样才可以解决一个棘手的问题呢?有两种方式: 1)后台处理: 也就是AJAX POST提交到后台,把图片上传到服务器上, ...
- (转)JS获取当前对象大小以及屏幕分辨率等
原文 JS获取当前对象大小以及屏幕分辨率等 <script type="text/javascript">function getInfo(){ var ...
- js前台加密,java后台解密实现
参考资料: JS前台加密,java后台解密实现
- JS获取当前对象大小以及屏幕分辨率等...
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta nam ...
- Device.js – 快速检测平台、操作系统和方向信息
在 Web 项目中,有时候我们需要根据程序运行的环境采取特定操作.Device.js 是一个很小的 JavaScript 库,它简化了编写和平台,操作系统或浏览器相关的条件 CSS 或 JavaScr ...
- 【Javascript Demo】JS获取当前对象大小以及屏幕分辨率等
效果如下: 代码如下: <html> <head> <title>获取当前对象大小以及屏幕分辨率等</title> <body> <d ...
- Sublime text3 JS语法检测工具安装及使用
Sublime text3 JS语法检测工具安装及使用 工具/原料 sublime text3 nodejs sublimeLinter sublimeLinter-jshint 方法/步骤 首先ct ...
随机推荐
- SuperMap iClient for JavaScript 之关联查询
人们常说,计划赶不上变化.同样的,在项目中,使用的数据也是在不断变化的,尤其是属性信息的改变.就比如说,地图上的地物,它的空间信息在比较长的时间内,都不会发生变化,他的属性信息在初期不完整或者与后来的 ...
- Cloudera Manager安装之时间服务器和时间客户端(Ubuntu14.04)(二)
第二步: Cloudera Manager安装之时间服务器和时间客户端(二) 找一台机器作为时间服务器 我这里,放到ubuntucmbigdata1这台机器! 注意,之前是已经做了集群时间同步了. 在 ...
- HDFS HA和Federaion
1.HA HA即为High Availability,用于解决NameNode单点故障问题,该特性通过热备的方式为主NameNode提供一个备用者,一旦主NameNode出现故障,可以迅速切换至备Na ...
- oracle connect by用法
先用scott用户下的emp表做实验.emp表有个字段,一个是empno(员工编号),另一个是mgr(上级经理编号)下面是表中所有数据 1 select * from emp start with e ...
- PHP返回404状态码,由服务器处理
1. 通过header()方法来实现, 最简单的方法,而且对php的版本没什么限制 <?php header('HTTP/1.1 404 Not Found'); ...
- React.js 小书 Lesson19 - 挂载阶段的组件生命周期(二)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson19 转载请注明出处,保留原文链接和作者信息. 这一节我们来讨论一下对于一个组件来说,cons ...
- 第一次尝试用ANT进行build
虽然是软件工程专业学生,但很多东西都才刚刚接触,有些惭愧,但我相信“Later better than never”,所以我还是鼓励自己不断学习,以后尽量把自己新学会的东西记录下来,以此来督促自己的学 ...
- css用hover制作下拉菜单
首先我们的需求就是 制作一个鼠标移动到某个区域就会有下拉菜单的弹出,这样会有更多的子类内容,示例代码如下: <!DOCTYPE html> <html lang="en&q ...
- .netCore2.0 部分视图ViewComponent
.netCore 中部分视图相当于轻量级的控制器,建立方法类似控制器,需要建立文件夹Components,然后再建立视图组件控制器,规则和视图控制器类似,默认结尾为ViewComponent,如Abc ...
- 判断网站域名是否被GFW(墙)过滤屏蔽了
GFW:Greate Firewall Of China中国防火长城: 描述: 1.今天所属的一个域名被告诉不能访问了,赶紧自己测试了一下,发现可以,然后对方试了下说是不行,然后仔细按对方说的一步步操 ...