kisonlee 2009-08-22 14:39
浏览 297
已采纳

请教关于客户端验证上传图片大小的问题

我在服务器端也写了验证代码,可是只能返回一个错误提示,这样就破坏了原来的CSS格式,我还不太了解CSS

现在我想请教下,如何在客户端利用JS写一个代码验证上传图片的尺寸和大小,并对不符合要求的弹出警告,另外我看了下网上这方便的内容,都不太符合,而且我这个不需要预览(有个帖子说防止图片太大filesize返回-1,需要预览,不太懂),请大家帮忙,最后又代码样例可以参考,谢谢

或者怎么利用SERVER端验证,然后在客户端弹出警告也行,不会写这样的代码,总之不要破坏原来的CSS就行

下面是我的JSP,无法验证大小,不知道为啥

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib prefix="s" uri="/struts-tags"%>

function checkFile() { var upload = document.getElementById("upload"); var value = upload.value; if(value == "") { alert("请先选择图片文件!"); return false; } var fso = new ActiveXObject('Scripting.FileSystemObject'); var file = fso.GetFile(upload); window.onerror = window.oldOnError; alert(file.Size); var contentType = value.substr(value.lastIndexOf(".")).toLowerCase(); if (contentType == ".jpg") { img = document.createElement("img"); img.style.position = "absolute"; img.style.visibility = "hidden"; img.src = upload; if (upload.fileSize > 204800) { alert("图片尺寸请不要大于200KB"); return false; } else return true; } else { alert("只能上传jpg格式的图片"); return false; } return true; }




Upload JPG




选择图片:





[b]问题补充:[/b]
那可以不看代码,直接解决问题就好了
[b]问题补充:[/b]
大家帮帮我啊
  • 写回答

3条回答 默认 最新

  • 成富 2009-08-23 12:44
    关注

    在浏览器中用JS来直接访问上传的文件是不可以的。我看你在代码中用了IE的ActiveX控件,如果你的应用只兼容IE,我觉得用ActiveX也没什么不可以。貌似IE7和8会弹出警告吧。

    我对ActiveX控件不熟悉,所以也不知道为什么你的代码不工作。

    不过关于图片大小验证,我建议你使用服务端验证的方式。基本思路就是用iframe把上传的文件POST到服务端,服务器端拿到文件内容之后,就可以判断大小了,然后返回相应的消息代码,浏览器端就可以使用了。

    你所谓的破坏CSS,我不是很明白。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?