[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ZIP с паролем
twin
Никогда не сталкивался с такой задачей, полез разбираться - темный лес.
Может кто то работал плотно с ZIP архивами?

Задача - сделать на лету запаролированный архив средствами PHP. Всевозможные exec, system, passthru не канают.

Примерно я разобрался, как это можно реализовать, но время жмет, мож кто подскажет полезного чего...





Спустя 8 минут, 21 секунда (8.11.2010 - 16:33) Basili4 написал(а):
Ну вот что то нашел может поможет http://koz1024.net/php/ziparchive.html

Спустя 7 минут, 36 секунд (8.11.2010 - 16:41) Invis1ble написал(а):
Basili4
Классная статья, надо будет попробовать код в действии..

Спустя 1 минута, 27 секунд (8.11.2010 - 16:42) Семён написал(а):
twin, никак без команд UNIX

Спустя 1 минута, 11 секунд (8.11.2010 - 16:43) Basili4 написал(а):
Invis1ble
я бы не был столь категоричным судя по коду
if ($zip->open('your_archive.zip') === ture){
$zip->extractTo('папка для разархивирования');
//а это - закрытие архива по окончании работы с ним. Хороший тон программирования.
$zip->close();
}else{
echo 'Не могу найти файл архива!';

ture портит все отношение но суть излагает

Спустя 6 минут, 13 секунд (8.11.2010 - 16:50) Invis1ble написал(а):
Basili4
ну да, на эту проверку я тоже обратил внимание )
Просто никогда не видел примеров работы с архивами - поэтому заинтересовался

Спустя 11 минут, 58 секунд (8.11.2010 - 17:02) twin написал(а):
Спасибо. Ничего утешительного, но и то приятно. smile.gif
Бум думать.

Спустя 2 часа, 1 минута (8.11.2010 - 19:03) koz1024 написал(а):
Цитата (Basili4 @ 8.11.2010 - 13:43)
Invis1ble
я бы не был столь категоричным судя по коду
if ($zip->open('your_archive.zip') === ture){
$zip->extractTo('папка для разархивирования');
//а это - закрытие архива по окончании работы с ним. Хороший тон программирования.
$zip->close();
}else{
echo 'Не могу найти файл архива!';

ture портит все отношение но суть излагает

И где Вы там ture увидели? biggrin.gif
А если серьёзно, спасибо что заметили, поправил

Спустя 10 минут, 35 секунд (8.11.2010 - 19:13) DmitryOpalev написал(а):
Извините, что не в тему пишу, но... twin спрашивает?
Прикольно ^^

Спустя 4 часа, 45 минут, 3 секунды (8.11.2010 - 23:58) linker написал(а):
twin
А не хочешь раром замутиться?

Спустя 3 минуты, 30 секунд (9.11.2010 - 00:02) twin написал(а):
RAR лецензию затребует. Да и финт в том, что для него в PHP библиотеки нет.
А exe нет возможности запустить.

Нигде не могу толковых доков найти...
Вроде не так сложно должно быть, алгоритм шифрации есть, нужно с заголовками файла разобраться. Пока затык.

Спустя 1 минута, 33 секунды (9.11.2010 - 00:03) linker написал(а):

Спустя 30 минут, 51 секунда (9.11.2010 - 00:34) twin написал(а):
Ну там нет такого. Да и архивации чет я так и не вкурил... Разархивация то есть, я знаю.
Не, не то. sad.gif

Спустя 6 часов, 13 минут, 45 секунд (9.11.2010 - 06:48) phz написал(а):
twin


Оно? Спешу сейчас... посмотри:


<?php
try

{
$fname = "zip-generated-from-php-" . date('Y-m-d-His') . ".zip";
$zipOutput = "c:\\temp\\" . $fname;
$zipfact = new COM("Ionic.Zip.ZipFile");
$zip->Name = $zipOutput;
$dirToZip= "c:\\temp\\psh";
# Encryption: 3 => 256-bit AES.
# 2 => 128-bit AES.
# 1 => PKZIP (Weak).
# 0 => None

$zip->Encryption = 3;
$zip->Password = "AES-Encryption-Is-Secure";
$zip->AddDirectory($dirToZip);
$zip->Save();
$zip->Dispose();

if (file_exists($zipOutput))
{
header('Cache-Control: no-cache, must-revalidate');
header('Content-Type: application/x-zip');
header('Content-Disposition: attachment; filename=' . $fname);
header('Content-Length: ' . filesize($zipOutput));
readfile($zipOutput);
unlink($zipOutput);
}
else
{
echo '<html>';
echo ' <head>';
echo ' <title>Calling DotNetZip from PHP through COM</title>';
echo ' <link rel="stylesheet" href="basic.css"/>';
echo ' </head>';
echo '<body>';
echo '<h2>Whoops!</h2>' . "<br/>\n";
echo '<p>The file was not successfully generated.</p>';
echo '</body>';
echo '</html>';
}
}

catch (Exception $e)
{
echo '<html>';
echo ' <head>';
echo ' <title>Calling DotNetZip from PHP through COM</title>';
echo ' <link rel="stylesheet" href="basic.css"/>';
echo ' </head>';
echo '<body>';
echo '<h2>Whoops!</h2>' . "<br/>\n";
echo '<p>The file was not successfully generated.</p>';
echo '<p>Caught exception: ', $e->getMessage(), '</p>', "\n";
echo '<pre>';
echo $e->getTraceAsString(), "\n";
echo '</pre>';
echo '</body>';
echo '</html>';
}

?>

Спустя 1 час, 36 минут, 8 секунд (9.11.2010 - 08:24) Семён написал(а):
Phz, Посмотри на строку, а затем посмотри в 1-ый пост.
$zipfact = new COM("Ionic.Zip.ZipFile");


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.