作者charto (总有曲折)
看板Web_Design
标题Re: [问题] 想用javascript来对要上传的档案做过滤
时间Fri Aug 27 13:52:52 2004
※ 引述《ikkti (巧丁)》之铭言:
: ※ 引述《ikkti (巧丁)》之铭言:
: : 我写了一个可以上传图片的网页
: : 而且用javascript来限制user上传图片的长宽
: : 但却不知道为什麽
: : 每次拿一张新的图片要上传时
: : 它第一次侦测到的图片长宽都是0 而导致无法上传
: : 但是再按一次"上传" 它就可以侦测到正确的size
: : 我所疑惑的是 既然第二次之後都可以正确的侦测到图片的长宽
: : 表示我的code语法应该是没有错的
: : 但为什麽每换一张没上传过的图片 第一次侦测都一定会错呢?
: : 感觉起来也许我忽略了什麽重要的细节@@
: : --
: : ◆ From: 218.163.133.229
: : 推 charto:请提供原始码 61.66.73.162 08/25
: http://www.cs.ccu.edu.tw/~fcj89u/uploadpic.txt
: 检视这个页面的原始码
帮你修改好了, 出问题的地方应该是在於, 当你指定 img.src 时, 电脑还没有载入好
你就已经请求 width 和 height, 所以会出现等於0 的问题, 所以改成这样就可以了
不过你这样子做, 懂的小聪明(或是说看得懂程式的人), 就可以利用其他招数上传不
符合的图, 既然你还有後端程式, 建议你後端程式也要加入这种验证, 至於javascript
的部份要不要留着, 就看你了, 因为这还是有点用, 至少不会让别人白上传, 另外以基
於怕别人白上传这点, 你可以利用 img.src 的结尾是不是 .jpg 或是 .jpeg 来检验是
不是jpeg图档, 否则一张图上传很久结果又说不行(唉 家里穷只能用1m), 要是我会气
炸的......
<script language="JavaScript">
var warning_msg="";
var checkok=1;
var img = new Image();
var LIMIT_HEIGHT=475;
var LIMIT_WIDTH=360;
var warning="";
function loadpic(){
img.src = document.upload_pic.uploadfile.value;
}
function checkpicture(field) {
warning="";
checkok=1;
h=img.height;
w=img.width;
if (field.name == "B1") {
if (h < LIMIT_HEIGHT)
{
checkok=0;
warning+="照片高度不符合规定!\n";
}
if (w < LIMIT_WIDTH)
{
checkok=0;
warning+="照片宽度不符合规定!\n";
}
if (h < w)
{
checkok=0;
warning+="照片高度小於宽度!\n";
}
if(checkok==1)
{
return true;
}else
{
alert(warning);
return false;
}
}
}
</script>
<form method="post" enctype="multipart/form-data" name="upload_pic" >
<input type="file" name="uploadfile" onchange="loadpic()"><br>
<input type="submit" value="开始上传" name="B1" onClick="return checkpicture(this)">
<input type="hidden" name="act" value="check">
</form>
--
嘴角勉强撑起了笑 也要让你看到最後一丝的骄傲
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.66.73.162
1F:推 ikkti:相当感谢^_______________^ 218.163.139.237 08/29