Xpoint
   [напомнить пароль]

Алгоритм получения списка файлов из RAR архива

Метки: [без меток]
2008-09-03 09:16:59 [обр] Rel[досье]
Нужно получить список файлов из RAR архива без использования сторонних программ и библиотек.
Код будет работать на PHP.
Как реализовать? Подскажите, пожалуйста.
спустя 54 минуты [обр] Александр Петров(2/4)[досье]

Пример из мануала PHP5:

<?php
$rar_file = rar_open('example.rar') or die("Can't open Rar archive");

$entries = rar_list($rar_file);

foreach ($entries as $entry) {
    echo 'Filename: ' . $entry->getName() . "\n";
    echo 'Packed size: ' . $entry->getPackedSize() . "\n";
    echo 'Unpacked size: ' . $entry->getUnpackedSize() . "\n";
    
    //А это распаковка, но она вам не нужна
    //$entry->extract('/dir/extract/to/');
}

rar_close($rar_file);

?>

Вот и все. ТОлько необходимо что бы было подключено расширение php_rar.dll

спустя 1 час 28 минут [обр] Rel[досье]
Александр Петров, нужно сделать без использования сторонних программ и библиотек (в вопросе это указано!)
спустя 34 минуты [обр] Александр Петров(2/4)[досье]

Rel[досье], а это не стороннии программы и библиотеки. Это расширение самого Php, которое опционально включается. Весь php состоит из таких расширений, даже работа с базой это расширение, хотя в последних версиях уже встроенное в ядро.
Тогда остается только анализировать файл по битам и изучать алгоритмы упаковки что бы написать просмотровщика. Но это долго, медленно и нецелесообразно. По моему мнению.
Так что проверьте включен ли увас php_rar.dll

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

спустя 2 часа 3 минуты [обр] Thirteensmay(17/157)[досье]
Rel[досье] Для того чтобы это сделать надо знать структуру rar архивов и возможно алгоритм сжатия. Эта информация является собственностью автора rar. Вам необходимо получить эту информацию и разрешение на ее использование у автора. В противном случае вы нарушаете закон. Даже если Вы получите эту информацию и реализуете сие на PHP, то вы затратите на это дело некоторые ресурсы и в результате получите тормоза, вместо совершенно бесплатного и быстрого решения.
спустя 1 день 19 часов [обр] Алексей Полушин(62/231)[досье]
Thirteensmay[досье] При установке rar в его каталоге появляется помимо всего прочего файлик TechNote.txt в котором описан формат архива. Разрешение на использование этой информации получать не нужно. Для получения списка файлов распаковывать архив не нужно. Реализовать на РНР можно, и тормозов при этом быть не должно.
спустя 3 часа 52 минуты [обр] Thirteensmay(17/157)[досье]
Может быть. Но это явно не разрешено, а в лицензии однозначно написано что Все права, явно не предоставленные здесь, принадлежат Александру Рошалу. Вы не можете использовать программу или ее часть иначе, чем это описано в данной лицензии. С юридической точки зрения вы будете не правы, однако с практической конечно врядли будут какие то последствия. Для получения списка файлов распаковывать архив не нужно если файлы в нем не заархивированы, что возможно, я не говорил что распаковывать обязательно. На счет тормозов при этом быть не должно можно конечно тоже гадать.
спустя 1 час 17 минут [обр] Rel[досье]

Алексей Полушин[досье] Спасибо большое!
Единственно полезный ответ в этой теме.

Thirteensmay[досье] Я конечно извиняюсь, но Ваш бред даже комментировать не возникает ни малейшего желания...

спустя 4 минуты [обр] Александр Петров(2/4)[досье]

Rel[досье]

Thirteensmay[досье] Я конечно извиняюсь, но Ваш бред даже комментировать не возникает ни малейшего желания...

Зря вы так! значит к вам люди в погонах еще не приходили.

спустя 10 минут [обр] Алексей Севрюков(162/1280)[досье]
Rel[досье] Ну-ну, флаг Вам в руки. Собираетесь писать rar на PHP? Так это не Thirteensmay[досье] бредит, а Вы.
Да и насчет лицензии зря Вы так. Она есть и этот факт отрицать нельзя. Если Вы собираетесь ее нарушать - значит ищите помощь в другом месте.
спустя 55 минут [обр] Алексей Полушин(62/231)[досье]
Кто сказал "писать rar на PHP" ? Речь вроде шла только про получение списка файлов в архиве. А насчет лицензии - она распостраняется на программу, но не на формат данных.
спустя 31 минуту [обр] Thirteensmay(17/157)[досье]

Лицензия распространяется не на программу а на ее пакет, файл TechNote.txt является его частью.

Да не в лицензии вообще то дело, она лищь зацепка для того кто захочет докапаться, я использовал ее лищь для того чтобы лишний раз убедить Rel[досье] не изобретать велосипеда, а пользоваться тем что уже есть, прекрасно работает и кушать не просит. Оно же и проще, и быстрее, отлажено и т.п., ленивый я от природы, не могу понять причин отказа ;)

Алексей Полушин[досье] А Вы бы тоже это сделали на pure PHP ?

спустя 5 минут [обр] Алексей Полушин(62/231)[досье]
  1. Формат данных не является объектом авторского права, поэтому лицензия на его использование не нужна.
  2. Если на хостинге не установлено соответствующеее расширение и нет возможности договориться об его установке, то сделал бы.
спустя 3 минуты [обр] Алексей Полушин(62/231)[досье]
Если уж вы так уперлись в лицензии, есть лицензия на unrar:
The UnRAR sources may be used in any software to handle RAR archives without limitations free of charge, but cannot be used to re-create the RAR compression algorithm, which is proprietary.
Distribution of modified UnRAR sources in separate form or as a part of other software is permitted, provided that it is clearly stated in the documentation and source comments that the code may not be used to develop a RAR (WinRAR) compatible archiver.
спустя 1 час 24 минуты [обр] Thirteensmay(17/157)[досье]

О, в коем веке закон почитал. Конкретно про формат данных ничего не сказано (если ошибаюсь поправьте), но слов там много всяких и притянуть за уши можно все что угодно, вплоть до того что сама программа является форматом данных. И вот это уже правда бред, думаю не стоит тут на эту тему флейм разводить. Если же следовать строго того что написано в лицензии то да, мы можем юзать исходники UnRAR практически как хотим, и вроде ничего нам не запрещает установить таким образом формат, но из исходников. Опять короче дебри, как обычно будет прав тот кто сильнее ;)

По поводу расширения, ну ладно допустим нет возможности договориться об его установке, тогда можно взять сам unrar и запускать его с ключиком возвращающим список файлов, скажете этого тоже низя ? Ну чтож, можно наверное и еще чтото придумать, но если конечно упереться, то да, могу Rel[досье] тока посочувствовать, придется ему трахаться. И как бы в следующий раз с таким подходом не пришлось переписывать заново операционку если она вдруг чегото не смогет.

спустя 1 день 5 часов [обр] Сергей Сирик(180/737)[досье]
М Перенесено из форума "Программирование::Теория и алгоритмы"
Powered by POEM™ Engine Copyright © 2002-2005