fb_ads

www.รับเขียนโปรแกรม.net รับเขียนโปรแกรม ระบบต่างๆ เช่น ระบบข้อมูลบุคคล ระบบข้อมูลลูกค้า ระบบซื้อขาย คลังสินค้า ระบบเช่าจอง ทำงานบน Website ด้วย PHP MySql NodeJs HTML5 JavaScript Ajax

ให้ผู้ใช้ Download ไฟล์รูปทีละหลายไฟล์บนหน้าเว็บ ด้วย JSZip

ในบางครั้งผู้ใช้ต้อง Download ไฟล์ รูปจากหน้าเว็บทีละหลายๆรูป 

เราสามารถช่วยผู้ใช้ได้ด้วยการสร้าง Zip File รูปภาพ ให้ผู้ใช้ Download รูป ได้ด้วย javascript

ในตัวอย่างนี้ใช้ Library จาก https://stuk.github.io/jszip/  และ https://github.com/eligrey/FileSaver.js/

ผลลัพธ์ที่ได้คือ https://xn--12cb3ech1bdffb0m0b3iuam.net/js_zip/js_zip.html

<html>
    <head>
        <meta charset="utf-8" />
        <!-- เรียกใช้งาน library FileSaver --->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.0/FileSaver.min.js" ></script>
        <!-- เรียกใช้งาน library jszip js --->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.5.0/jszip.min.js" ></script>
        <!-- เรียกใช้งาน bootstrap css --->
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" />
    </head>
    <body>
        
        <div class="container">
            <h1>ตัวอย่างโดย www.รับเขียนโปรแกรม.net</h1>
            <!-- สร้างแถวรูปภาพ --->
            <div class="row">
                <div class="col-sm-4">

                        <div class="card">
                            <div class="card-body text-center">
                                <!-- แสดงรูปภาพ โดยกำหนด id เป็น img1 --->
                                <img id="img1" src='screen1.png' style="max-width: 100%" />
                                <!-- สร้าง check box โดยกำหนด id เป็น img1_check --->
                                <input type="checkbox" id="img1_check"  /> เลือก
                            </div>
                            
                        </div>

                </div>

                <div class="col-sm-4">

                    <div class="card">
                        <div class="card-body text-center">
                            <!-- แสดงรูปภาพ โดยกำหนด id เป็น img2 --->
                            <img id="img2" src='screen2.png' style="max-width: 100%" />
                            <!-- สร้าง check box โดยกำหนด id เป็น img2_check --->
                            <input type="checkbox" id="img2_check"  /> เลือก
                        </div>

                    </div>

                </div>

                <div class="col-sm-4">

                    <div class="card">
                        <div class="card-body text-center">
                            <!-- แสดงรูปภาพ โดยกำหนด id เป็น img3 --->
                            <img  id="img3" src='screen3.png' style="max-width: 100%" />
                            <!-- สร้าง check box โดยกำหนด id เป็น img3_check --->
                            <input type="checkbox" id="img3_check"  /> เลือก
                        </div>

                    </div>

                </div>

            </div>
            <br />
            <div class="text-center">
                <!-- สร้าง ปุ่ม Download Zip โดย เมื่อกด แล้วจะไปทำงานที่ function download_zip()  --->
                <button class="btn btn-primary" type="button" onclick="download_zip()">
                    Download Zip
                </button>
            </div>

        </div>
        
        <script>

            //สร้าง function  สำหรับ Download Zip ไฟล์
            async function download_zip()
            {
                var zip = new JSZip();//สร้าง instance ของ object JSZip

                var response=null;
                var imageBlob=null;

                if(document.getElementById("img1_check").checked)
                {
                    //ถ้ามีการเลือก รูปที่ 1 ให้เพิ่มรูปที่ 1 ไปใน Zip ไฟล์
                    response = await fetch(document.getElementById("img1").src)
                    imageBlob = response.blob();
                    zip.file("img1.png", imageBlob, {base64: true});//ตั้งชื่อไฟล์รูปว่า img1.png
                }

                if(document.getElementById("img2_check").checked)
                {
                    //ถ้ามีการเลือก รูปที่ 2 ให้เพิ่มรูปที่ 2 ไปใน Zip ไฟล์
                    response = await fetch(document.getElementById("img2").src)
                    imageBlob = response.blob();
                    zip.file("img2.png", imageBlob, {base64: true});//ตั้งชื่อไฟล์รูปว่า img2.png
                }

                if(document.getElementById("img3_check").checked)
                {
                    //ถ้ามีการเลือก รูปที่ 3 ให้เพิ่มรูปที่ 3 ไปใน Zip ไฟล์
                    response = await fetch(document.getElementById("img3").src)
                    imageBlob = response.blob();
                    zip.file("img3.png", imageBlob, {base64: true});//ตั้งชื่อไฟล์รูปว่า img3.png
                }

                zip.generateAsync({type:"blob"}).then((content)=> {
                    //สั่งให้ Browser Download ไฟล์ Zip โดยตั้งชื่อว่า pictures.zip
                    saveAs(content, "pictures.zip");
                });
                
            }

        </script>
    </body>
</html>

 

ผลลัพธ์ที่ได้คือ https://xn--12cb3ech1bdffb0m0b3iuam.net/js_zip/js_zip.html