將input type="file" 類型的圖片文件轉成base64


帶有圖片的form表單上傳數據是很麻煩的,因為圖片通常都是和文字分開上傳,這是很麻煩的,所有吧圖片轉成base64就可以和當成文字上傳了。話不多少,看代碼:

首先定義一個類型為file的input標簽還要定義一個onchange事件,並傳入一個event參數。

 

<div>
    <input type="file" id="imgTest" type="file" onchange="imgChange(event)" accept=".gif,.jpg,.jpeg,.png">
</div>
<img src="" id="showImage" alt="">

 

 

在這個onchange事件方法中會接收一個event參數,我們可以在這個參數中拿到這個input的標簽對象還可以拿到這個文件。

 

function imgChange(e) {
    console.info(e.target.files[0]);//圖片文件
    var dom =$("input[id^='imgTest']")[0];
    console.info(dom.value);//這個是文件的路徑 C:\fakepath\icon (5).png
    console.log(e.target.value);//這個也是文件的路徑和上面的dom.value是一樣的
    var reader = new FileReader();
    reader.onload = (function (file) {
        return function (e) {
           console.info(this.result); //這個就是base64的數據了
            var sss=$("#showImage");
            $("#showImage")[0].src=this.result;
        };
    })(e.target.files[0]);
    reader.readAsDataURL(e.target.files[0]);

}

 

 

拓展 : 把頁面中的圖片變成base64的數據

 

 

<!--這里先搞上一張圖片-->
<img id="img" src="/img/my.jpg" alt="" style="width: 150px;height: 150px">

<input type="button" onclick="imgChaneBase64()" value="img標簽繪制到canvas" /><br />
<!--引入html2canvas-->
<script type="text/javascript" src="/lib/html2canvas/html2canvas.js"></script>
<script type="text/javascript">
    function imgChaneBase64() {
        //將要變成base64的圖片的html標簽當參數傳進來,這里如果將document傳進來,就會將整個頁面變成圖片,在then中會返回一個canvas
        html2canvas(document.getElementById("img")).then(function(canvas) {
            console.info(canvas);
            var imgData = canvas.toDataURL("image/png"); //這里會將canvas轉化為base64的數據
            document.body.appendChild(canvas); //頁面鼠標右擊這個標簽時會提示保存圖片,保存之后會以png格式保存

        });
    }
</script>

這里要注意的是這種方法其實利用的是截屏的原理,將html內容變成base64的,所有其實不是真的將這個圖片變成base64。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM