檢查上傳圖片的大小和格式

  99cj_org-->WebRoot-->cdn-->static-->js-->org-->base-->base_info-->show.jsjavascript

   首先是jsp中的<div>html

<div class="form-group">
            <label class="form-label">機構logo:</label>
            <div class="form-input">
              <div class="input-img-upload img-company-logo"><span>機構 LOGO</span>
                <div class="inner"><img id ="org_logo_img" src="" onerror="javascript:this.src='<%=R.getStaticPath("images/user-header.png")%>';"  alt=""></div>
                <div class="btn-uploadfile" id="logo_img_div"><span>
                     
                    上傳圖片</span>
                  <input name="u_head_url" ref="head_url" id="logo_img_upload" type="file" accept="image/*"/>
                  <input name="u_head_url_img" id="u_head_url_img" type="hidden">
                </div>
              </div>
              <div class="help-tip">
                <div class="tip">
                  封面要求:<br/>
                  1. 建議最佳尺寸:200 x 80 px <br/>
                  2. 上傳文件大小不能超過 1 MB <br/>
                  3. 支持 jpg、png、gif 格式<br/><span>推薦使用透明背景的png格式</span>
                </div>
              </div>
            </div>
          </div>

   <input>的type="file"能夠直接選取文件,accept屬性是限制文件的格式java

   

function checkImg(this_){
		var filepath = this_.val();
        var extStart = filepath.lastIndexOf(".");
        var ext = filepath.substring(extStart, filepath.length).toUpperCase();
        if ( ext != ".PNG" && ext != ".GIF" && ext != ".JPG") {
        	YY.ui.alert("圖片限於png,gif,jpeg格式");
            return false;
        }
        var file_size = 0;
        if (/msie/.test(navigator.userAgent.toLowerCase())) {
            var img = new Image();
            img.src = filepath;
            while (true) {
                if (img.fileSize > 0) {
                    if (img.fileSize > 1 * 1024) {
                    	YY.ui.alert("上傳的圖片大小不能超過1M!");
                    	return false;
                    } 
                    break;
                }
            }
        } else {
            file_size = this_[0].files[0].size;
            var size = file_size / 1024;
            if (size > 1024) {
            	YY.ui.alert("上傳的圖片大小不能超過1M!");
            	return false;
            } 
        }
        return true;
	}

   參數「this_」是jsp內的節點 var tip = $("#logo_img_upload");jquery

   判斷格式:數組

   獲取的this_.val()爲選擇的文件的路徑,用string處理後經過其拓展名就能夠判斷出此文件屬於什麼類型的文件。瀏覽器

   判斷文件大小:jsp

/msie/.test(navigator.userAgent.toLowerCase())

   以上代碼爲jquery1.9後更新的內容,用來判斷瀏覽器類型,具體判斷方式問百度;以上的判斷是用來判斷是否爲IE瀏覽器,具體是否生效沒有用IE測(微軟本身都放棄IE了),這裏主要分解非IE瀏覽器的處理方式:ui

 file_size = this_[0].files[0].size;
            var size = file_size / 1024;
            if (size > 1024) {
            	YY.ui.alert("上傳的圖片大小不能超過1M!");
            	return false;
            }

   file_size獲取的值即是當前文件的大小,單位是KB,因此後面要/1024,將單位轉化爲M後進行比較。this

   主要須要注意的是this_[0].files[0].size的寫法,jquery獲取的節點對象實際上是將getElementById()獲取的節點對象進行封裝後的結果,而jquery對象默認是一個數組,因此定位後須要加索引號。具體內容請參照如下博客:url

http://blog.sina.com.cn/s/blog_6edf16820102vhox.html

按照this_[0].files[0].size的寫法,當type="file"的時候,獲取的files默認也被封裝成爲了數組,因此也須要加入索引號。

同時,this_[0]爲原生對象,也就是說,files[0].size這個屬性是javascript原生對象的屬性,並不屬於jquery的方法。

相關文章
相關標籤/搜索