前端校驗圖片尺寸大小

這篇文章主要記錄最近實習(xí)工作中遇到的前端檢查圖片尺寸的問題,在這個過程明白的一些道理。

我由于目前的水平有限,只能借助網(wǎng)絡(luò)來完成這個功能。在這個查找的過程中,發(fā)現(xiàn)很多博客都寫的有問題,雖然表面完成了,但是一測試,很多不對的地方,感覺都是抄的別人的,沒抄完整。
那么我希望我寫的文章,讀者都是可以完美復(fù)寫的。

先上完美運行的代碼

以下是我親測可以運行的代碼。連我這種前端0.1年的人都能學(xué)會。

<html xmlns="http://www.w3.org/1999/xhtml">  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
    <title></title>  
    <script>  
        function setImg() {  
            var docObj = document.getElementById("imgPath");   //獲得上傳的文件的數(shù)組形式
            var files = document.getElementById("imgPath").value;  
            console.log(docObj.files)
            console.log(files)
               
            if (docObj.files && docObj.files[0]) {  
                    var img = new Image();  
                    img.onload = function(){      
                    var width = img.width;  //圖片的寬
                    var height=img.height;   //圖片的高
                    var filesize = img 
                    console.log(width)
                    console.log(height)
                    console.log(filesize) 
                   if (width != 257 || height != 100){
                alert('圖片尺寸不符合規(guī)范,請更新寬高比為257*100的圖片');
            } else{
                //后續(xù)代碼
            }
            
           if(docObj.files[0].size > maxSize){
              alert('您上傳的圖片大小超過了50k,請更新符合規(guī)范的圖片');
            }
                 };  
                img.onerror=function(){  
                    alert("error!");  
                };  
                img.src=window.URL.createObjectURL(docObj.files[0]);  
                console.log(img.src);
            }     
        }  
    </script>  
  </head>  
<body>  
    <input id="imgPath" type="file"  onchange="setImg()"/>  
</body>  
</html>  

上述代碼的image和file的操作在歷經(jīng)尋找多個不合適的博客之后終于成功了。

File API以及Image對象

如果input的type=file,就可以選擇文件從本地上傳到網(wǎng)頁。
讀取文件內(nèi)容按照MDN操作files的方法如下所示

  • 1.使用普通的類選擇器選擇要操作的input元素里面的文件
    var files = document.getElementById('imgpath').files;
    要注意獲得的是一個file的數(shù)組?。?!


    files數(shù)組的內(nèi)容.png

如果只要一個文件,就可以用var file = files[0];獲得file的所有信息。
input元素后面寫上multiple,就可以上傳多個文件。同理多個文件的第一個文件也使用這個方法。

  • 2.通過change事件來訪問被選擇的文件,即為onchange綁定一個函數(shù)
    只要用戶選擇了一個文件,那么就會傳入這個file對象。
  • 3.再創(chuàng)建一個image對象,一定要先onload。
  • 4.給img賦上地址img.src=window.URL.createObjectURL(docObj.files[0]);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,176評論 25 708
  • 今天不能再拖了,連續(xù)好幾天的發(fā)熱,早晨沒讓他吃飯怕到醫(yī)院查血,還沒出發(fā)就喊餓了,兒子堅持一下到醫(yī)院做了檢查我給你去...
    等風(fēng)來_sw1314閱讀 316評論 2 2
  • 從十大爛歌手、整容風(fēng)波、四肢不協(xié)調(diào),到現(xiàn)在音樂天后、亞洲舞娘、翻糖大師,時尚風(fēng)向標(biāo).... ...蔡依林用了十八年...
    云心月閱讀 1,379評論 8 7
  • 別墅應(yīng)該是第二居所,是主住宅之外的居住建筑。通常是人們周末想避開煩囂的都市生活,在清靜的環(huán)境優(yōu)雅一些的地方休閑的居...
    碧海藍灣閱讀 153評論 2 1
  • 圖片發(fā)自簡書App兒子在淘寶上突然看中了一款帶滑板的老款手機,輸入法是用按鍵的那種,他覺得很酷。如果倒回去沒有蘋果...
    小芳的天空閱讀 521評論 0 2

友情鏈接更多精彩內(nèi)容