Loading:


    Paker ZIP On-Line

    Często zdarza się, że potrzebujemy spakować coś na szybko, a nie posiadamy programu do tego stworzonego, nie mamy czasu na szukanie i instalowanie albo po prostu musimy spakować pliki wybrane do downloadu w jedną paczkę. Zastosowań jest naprawdę wiele.

    Co będzie nam potrzebne:
    - serwer z PHP
    - PHP ze skompilowaną biblioteką ZZIPlib dla PHP4 lub zlib dla PHP5 (można sprawdzić dostępność funkcją phpinfo() - w sekcji Configure Command szukamy parametru '--with-zip' dla PHP4 lub '--enable-zip' dla PHP5)

     

    Tworzymy poszczególnie pliki oraz katalog "tmp"



    Napisz Artyku³

    Listing

    index.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="pl">

    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
      <link rel="stylesheet" type="text/css" href="./style.css" />
      <script type="text/javascript" src="./scripts.js"></script>
      <title>Zip Compressor</title>

    </head>
    <body>
      <div>
            <form action="zip.php" enctype="multipart/form-data" method="post">
            <table>
              <tbody>
                    <tr>
                      <td>
                            <table>
                              <tbody>
                                    <tr>
                                      <td>Nazwa pliku ZIP:</td>
                                      <td><input type="text" value="" name="zip_name" /></td>
                                    </tr>
                              </tbody>
                            </table>
                      </td>
                    </tr>
                    <tr>
                      <td>
                            <div id="files">
                              <div id="file">
                                    <table>
                                      <tbody>
                                            <tr>
                                              <td>Plik do spakowania:</td>
                                              <td><input type="file" name="files[]"/></td>
                                            </tr>
                                      </tbody>
                                    </table>
                              </div>
                            </div>
                      </td>
                    </tr>
                    <tr>
                      <td>
                            <table>
                              <tbody>
                                    <tr>
                                      <td>
                                            <input type="button" onclick="addFile()" value="Dodaj Plik" />
                                            <input type="button" onclick="remFile()" value="Usuń Plik" />
                                      </td>
                                    </tr>
                                    <tr>
                                      <td><input type="submit" value="Spakuj" /></td>
                                    </tr>
                              </tbody>
                            </table>
                      </td>
                    </tr>
              </tbody>
            </table>
            </form>
      </div>
    </body>
    </html>


    scripts.js
    function addFile() {
      var files = document.getElementById("files"); // 1
      var file = document.getElementById("file"); // 2
      files.appendChild(file.cloneNode(true)); // 3
    }

    function remFile() {
      var files = document.getElementById("files"); // 1
      var file = document.getElementById("file"); // 2
      files.removeChild(file); // 4
      var file_last = document.getElementById("file"); // 5
      if (! file_last) {
            files.appendChild(file);
      }
    }


    zip.php
    <?php

    $tmp = 'tmp/';
    $dir = time();

    $directory = $tmp.$dir;

    $zip_name = $_POST['zip_name'];

    $file_list = array();

    mkdir($directory, 0777);

    $files_number = sizeof($_FILES['files']['name']);

    for ($i = 0; $i < $files_number; $i++) {
      if (is_uploaded_file($_FILES['files']['tmp_name'][$i])) {
            move_uploaded_file($_FILES['files']['tmp_name'][$i], $directory."/".$_FILES['files']['name'][$i]);
            $file = array( "path" => $directory."/".$_FILES['files']['name'][$i], "name" => $_FILES['files']['name'][$i]);
            array_push($file_list, $file);
      }
    }

    $zip = new ZipArchive();

    if ($zip->open($directory."/".$zip_name.".zip", ZIPARCHIVE::CREATE)) {
      foreach ($file_list as $f) {
            $zip->addFile($f['path'], $f['name']);
      }
    }

    $zip->close();

    $handle = opendir($directory);
    while (($obj = readdir($handle))) {
                    if(($obj == ".") || ($obj == "..") || ($obj == $zip_name.".zip")) continue;
                    unlink($directory."/".$obj);
    }

    header("Content-Type: application/zip");
    header("Content-Disposition: attachment; filename=".basename($directory."/".$zip_name.".zip").";" );
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($directory."/".$zip_name.".zip"));
    readfile($directory."/".$zip_name.".zip");

    unlink($directory."/".$zip_name.".zip");
    rmdir($directory);

    ?>
     




    Dodano przez: bravura Ranga: 0 Punktów: 0
    Komentarze użytkowników
    Za pomocą tej metody można zrobić opcje wyboru co chcemy pobrać np. Plik z dodatkiem lub bez.
    autor: adikso | 12485 | 2011-06-13 15:10:33


      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors