Функция PHP zip делает zip, но скачивает - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть функция, которая называется zip, которая делает молнию из папки.Работает отлично, за исключением того, что он загружает почтовый индекс после его создания.Я хочу, чтобы пользователи могли загружать и создавать резервные копии по требованию.Но они загружаются, когда они сделаны также.Это мой код PHP:

    function zip($source, $destination){
    if (extension_loaded('zip') === true){
        if (file_exists($source) === true){
            $zip = new ZipArchive();
            if ($zip->open($destination, ZIPARCHIVE::CREATE) === true ){
                $source = realpath($source);
                if (is_dir($source) === true){
                    $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);
                    foreach ($files as $file){
                        $file = realpath($file);
                        if (is_dir($file) === true){
                            $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
                        }
                        else if (is_file($file) === true){
                            $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
                        }
                    }
                }
                else if (is_file($source) === true) {
                    $zip->addFromString(basename($source), file_get_contents($source));
                    }
            }
            return $zip->close();
        }
    }
    return false;
}
zip("../data", "backup.zip");

Кто-нибудь знает, как решить мою проблему?Заранее спасибо!

Примечание:

Текстовая версия: здесь

1 Ответ

1 голос
/ 15 февраля 2011

У меня была похожая проблема, но я делал файлы zip по-другому, поэтому я не знаю, применимо ли это.Моя проблема была с Internet Explorer, я создавал zip-файл, когда пользователь нажимал на ссылку, и в IE он автоматически загружался, когда это было сделано, но другие браузеры работали бы нормально.

Я бы проверил на $_SERVER ["HTTP_USER_AGENT"] в моей ссылке, и мне пришлось добавить к нему "target = _blank", чтобы запретить IE автоматическую загрузку.

...