javascript图片上传类型及大小判断

    在jsp中进行图片上传,有时需要进行图片大小以及类型的判断。通常有两种实现方式,一是在后台servlet中进行校验,但这种做法会发生前后台数据交换,不建议;二是直接在前台使用javascript进行校验。以下就第二种方法进行说明。

 

    在jsp页面中,通过input的file类型进行图片的浏览,通过点击一个按钮进行图片的上传。


    在按钮的onclick事件中进行图片的类型与大小的校验,类型的校验自不必说,截取文件路径即可获取,但在进行图片大小校验时却会会碰到一个比较棘手的问题:图片加载问题。


    因为,当创建了一个图片对象 var image = new Image(),并设置了image.src = fileUrl 时,如果你接下来就想要获取image.fileSize,那是不太可能的,因为图片的加载未完成,此时获取到的只是一个null。


    当然,也有考虑过使用setTimeout()或是setInterval()方法来进行延时。但是很悲剧,没成功。因为在进行延时的同时,图片的加载也停止。也可以考虑在获取图片大小前alert一下,因为alert时,图片加载没有停止。

 

    下面说一下,偶经历重重悲剧后想到的方法吧。


    可以看到,完成图片的上传使用到了两个控件,input-file(请允许偶这样写啦)和按钮button。


    不废话了。


    1.创建一个全局的image对象。


    2.在input-file的onchange事件响应函数中进行图片类型的判断和图片的加载(image.src = fileUrl),OK这边的完事了。


    3.在按钮的onclick事件响应函数中尽管使用image.fileSize吧!!!因为偶试了好多次,几乎是左手这边浏览文件窗口刚按了enter右手马上点击提交按钮,还是能够获取到。

 

    现在把这种方法分享一下,因为之前在网上苦苦寻找,结果没找着一个好用的。偶的表达能力不行,大家见谅啊!!!

 

    补充一点,大家如果有啥更好的方法,一定要给偶回复哦!!!不然就画圈圈诅咒你!哦呵呵呵呵。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的实现方案,可以用于判断不同浏览器和图片类型大小: ```javascript function validateImage(file) { // 获取文件类型大小 var fileType = file.type; var fileSize = file.size; // 判断文件类型 if (fileType !== "image/png" && fileType !== "image/jpg" && fileType !== "image/jpeg") { alert("只支持 png, jpg 和 jpeg 格式的图片"); return false; } // 判断文件大小 if (fileSize > 5 * 1024 * 1024) { alert("文件大小不能超过 5MB"); return false; } // 判断浏览器类型 var isIE = navigator.userAgent.indexOf("Trident") !== -1; var isEdge = navigator.userAgent.indexOf("Edge") !== -1; var isChrome = navigator.userAgent.indexOf("Chrome") !== -1; if (isIE || isEdge) { // IE 和 Edge 浏览器 var objImg = document.createElement("img"); objImg.src = file.value; if (objImg.fileSize > 5 * 1024 * 1024) { alert("文件大小不能超过 5MB"); return false; } } else if (isChrome) { // Chrome 浏览器 var img = new Image(); img.src = window.URL.createObjectURL(file); img.onload = function() { if (this.width > 1920 || this.height > 1080) { alert("图片宽度不能超过 1920px,高度不能超过 1080px"); return false; } }; } return true; } // 监听上传图片事件 var fileInput = document.getElementById("fileInput"); fileInput.addEventListener("change", function() { var file = this.files[0]; if (validateImage(file)) { // 图片验证通过,可以进行上传操作 // ... } }); ``` 注意:以上代码仅为基本实现方案,可能存在一些兼容性问题和安全性问题,具体需要根据实际情况进行优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值