作者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