Advertisement
Thunder-Menu

FileToZip.html

Aug 15th, 2023
1,303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 2.48 KB | Source Code | 0 0
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Compression de Fichiers</title>
  7. </head>
  8. <body>
  9.     <h1>Compression de Fichiers</h1>
  10.    
  11.     <input type="file" id="fileInput" multiple>
  12.     <button id="compressButton" disabled>Compresser et Enregistrer</button>
  13.  
  14.     <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js"></script>
  15.     <script>
  16.         document.addEventListener("DOMContentLoaded", function () {
  17.             const fileInput = document.getElementById("fileInput");
  18.             const compressButton = document.getElementById("compressButton");
  19.  
  20.             fileInput.addEventListener("change", function (e) {
  21.                 if (e.target.files.length > 0) {
  22.                     compressButton.disabled = false;
  23.                 }
  24.             });
  25.  
  26.             compressButton.addEventListener("click", function () {
  27.                 const filesToCompress = Array.from(fileInput.files);
  28.                 const zip = new JSZip();
  29.  
  30.                 const promises = filesToCompress.map(file => {
  31.                     return new Promise(resolve => {
  32.                         const reader = new FileReader();
  33.                         reader.onload = function () {
  34.                             zip.file(file.name, reader.result);
  35.                             resolve();
  36.                         };
  37.                         reader.readAsArrayBuffer(file);
  38.                     });
  39.                 });
  40.  
  41.                 Promise.all(promises).then(() => {
  42.                     const zipName = prompt("Entrez le nom du fichier ZIP :") || "compressed.zip";
  43.                     const saveFileDialog = document.createElement("a");
  44.                     saveFileDialog.style.display = "none";
  45.                     saveFileDialog.addEventListener("click", function (e) {
  46.                         e.target.style.display = "none";
  47.                     });
  48.                     document.body.appendChild(saveFileDialog);
  49.  
  50.                     zip.generateAsync({ type: "blob" }).then(function (content) {
  51.                         const url = URL.createObjectURL(content);
  52.                         saveFileDialog.href = url;
  53.                         saveFileDialog.download = zipName;
  54.                         saveFileDialog.click();
  55.                         URL.revokeObjectURL(url);
  56.                     });
  57.                 });
  58.             });
  59.         });
  60.     </script>
  61. </body>
  62. </html>
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement