帶有圖片的form表單上傳數據是很麻煩的,由於圖片一般都是和文字分開上傳,這是很麻煩的,全部吧圖片轉成base64就能夠和當成文字上傳了。話很少少,看代碼:javascript
首先定義一個類型爲file的input標籤還要定義一個onchange事件,並傳入一個event參數。html
<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的標籤對象還能夠拿到這個文件。java
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]);
}canvas
拓展 : 把頁面中的圖片變成base64的數據app
<!--這裏先搞上一張圖片--> <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。dom