Caminho de Navegação Php / Artigos / Gerando arquivos ZIP dinamicamente

Php

 

Nenhuma avalição
Indique ao Ueba Indique ao BlogBlogs Indique ao Delicious Indique ao Technorati Indique ao Google Bookmarks Indique ao Newsgator
TAGS

Nenhuma tag foi definida ainda!

Defina as tags para esta página preenchendo o campo abaixo.

  • Máximo de 100 tags
  • Cada tag deve ter até 20 caracteres.
  • Separar as tags com virgula. Ex.: php, sql, html, xml, fireworks
COMENTAR

INDICAR
Nome do amigo: E-mail do amigo: Comentário:
REPORTAR ERRO Descreva o erro:

Gerando arquivos ZIP dinamicamentePostada em: 28/08/2004

Preceptor
Por: Preceptor Nº de Visualizações: 2252.

Lista de páginas desta publicação:




Um bom habito para aprender programar em qualquer linguagem é estudar códigos já prontos.

Eu tinha acabado de baixar o phpMyAdmin 2.2.6 ( http://phpmyadmin.sourceforge.net ), e após configurá-lo comecei a fuçar nos scripts contidos. Achei um script com nome zip.lib.php e passei a “brincar com ele”.

Mas antes que vocês possam “brincar” também, é necessário habilitar a biblioteca Zlib (funções para compressão de dados - http://www.php.net/manual/pt_BR/ref.zlib.php).

Em algumas versões do PHP para win32 é só editar o arquivo php.ini, indo na linha que contém ;extension=php_zlib.dll ,retirando o “;”.

O script do zip.lib.php :


<?php
class zipfile
{
    /**
     * Array para armazenar dados comprimidos
     *
     * @var  array    $datasec
     */

    var $datasec      = array();

    /**
     * diretório central
     *
     * @var  array    $ctrl_dir
     */

    var $ctrl_dir     = array();

    /**
     * Fim do registro do diretório central
     *
     * @var  string   $eof_ctrl_dir
     */

    var $eof_ctrl_dir = "x50x4bx05x06x00x00x00x00";

    /**
     * Posição do último offset
     *
     * @var  integer  $old_offset
     */

    var $old_offset   = 0;


    /**
     * Converte a data no formato Unix para formato DOS
     *
     */

    function unix2DosTime($unixtime = 0) {
        $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);

        if ($timearray['year'] < 1980) {
                $timearray['year']    = 1980;
                $timearray['mon']     = 1;
                $timearray['mday']    = 1;
                $timearray['hours']   = 0;
                $timearray['minutes'] = 0;
                $timearray['seconds'] = 0;
        } // end if

        return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
                ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    }