ด้วยเหตุผลด้านความปลอดภัย เบราว์เซอร์จึงไม่อนุญาตให้เข้าถึงเส้นทางของไฟล์รูปภาพที่เลือกผ่านอินพุต เช่น JavaScript ในเบราว์เซอร์จะไม่สามารถเข้าถึงระบบไฟล์ได้ ดังนั้น งานของเราคือดูตัวอย่างไฟล์ภาพที่เลือกผ่านอินพุตก่อนที่เราจะส่งไปยังเซิร์ฟเวอร์ใด ๆ หรือที่อื่น ๆ
วิธีที่ 1:การใช้คลาส URL:
เราสามารถใช้ฟังก์ชัน createObjectURL() ของคลาส URL เพื่อสร้าง url ของรูปภาพที่เลือกโดยอินพุต จากนั้นระบุ url นั้นให้กับแอตทริบิวต์ src ของแท็ก img
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
<img id="preview"/> <input type="file" accept="image/*" onchange="previewImage(event)"> <script> const previewImage = e => { const preview = document.getElementById('preview'); preview.src = URL.createObjectURL(e.target.files[0]); preview.onload = () => URL.revokeObjectURL(preview.src); }; </script>
วิธีที่ 2:การใช้คลาส FileReader:
เมธอดนี้จะแยกวิเคราะห์ไฟล์ที่ นำเข้ามา จากนั้นจะสร้างสตริงที่มีการแทนค่า base64 ของรูปภาพ
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
<img id="preview"/> <input type="file" accept="image/*" onchange="previewImage(event)"> <script> const previewImage = e => { const reader = new FileReader(); reader.readAsDataURL(e.target.files[0]); reader.onload = () => { const preview = document.getElementById('preview'); preview.src = reader.result; }; }; </script>
ผลลัพธ์
ผลลัพธ์สำหรับทั้งสองวิธีจะมีลักษณะดังนี้ -