[PHP] Rar bestand inlezen mbv php

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben op zoek naar een manier om de inhoud van .rar bestanden in te lezen. (dus eigenlijk alleen de namen van de bestanden in zo'n .rar
Heb wel een mogelijkheid gevonden om dit te doen voor .zip bestanden, mbv deze site: http://www.esurfers.com/m-zip/

Nu vraag ik me af of iemand enig idee heeft hier een commandline voor te bedenken, want ik kom er niet uit.
Schijnt een mogelijkheid te zin om ook andere ingepakte bestanden in te lezen.

een andere oplossing voor dit probleem is natuurlijk ook welkom..

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
De cli-versie van rar kent toch allemaal leuke commando's om de gegevens uit een rar-file te halen?

Trouwens, php heeft ook de mogelijkheid tot native zip-support...

[ Voor 26% gewijzigd door ACM op 13-04-2004 10:38 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat vereist toch wel wat meer uitleg.. cli-versie van RAR?

Native zip support werkt onder PHP.. nu alleen de RAR nog ..

daar word nergens over gesproken

Acties:
  • 0 Henk 'm!

  • pasta
  • Registratie: September 2002
  • Laatst online: 12-01 14:16

pasta

Ondertitel

Verwijderd schreef op 13 april 2004 @ 11:02:
Dat vereist toch wel wat meer uitleg.. cli-versie van RAR?

Native zip support werkt onder PHP.. nu alleen de RAR nog ..

daar word nergens over gesproken
Client versieCommand line interface, idd ralpje :)

[ Voor 8% gewijzigd door pasta op 13-04-2004 11:05 ]

Signature


Acties:
  • 0 Henk 'm!

  • ralpje
  • Registratie: November 2003
  • Nu online

ralpje

Deugpopje

command line interface, denk ik eigenlijk.

Freelance (Microsoft) Cloud Consultant & Microsoft Certified Trainer


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK.. had ik kunnen weten |:(
Maar goed.. daar ben ik al mee bezig geweest, en kom ik dus niet veel verder mee.

Ook in combinatie met de code van het script uit mijn eerste post, valt hier weinig info uit op te halen..

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
code:
1
2
3
4
5
6
7
8
9
10
11
12
F:\>"c:\Program Files\WinRAR\Rar.exe" l rename.rar

RAR 3.20    Copyright (c) 1993-2003 Eugene Roshal    15 May 2003
Shareware version         Type RAR -? for help

Archive rename.rar

 Name             Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
-------------------------------------------------------------------------------
 rename.php        428      276  64% 29-09-02 03:26   .....A   061D3DDD m3b 2.9
-------------------------------------------------------------------------------
    1              428      276  64%


Volgens mij kan je daar aardig wat mee hoor?
Voor linux is er ook nog een afzonderlijke (minder complexe) unrar overigens voor de cli.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ok, thanx..
dat scheelt wel iets..

Mocht iemand een andere mogelijkheden hebben, dan hoor ik het graag..

Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Je kan natuurlijk proberen je eigen rar file parser te schrijven. Ik heb even met een hex editor gekeken naar het rar formaat en in 15 minuutjes een functie geschreven die half werkt, dus als je de specificaties van een rar file kan vinden zal het misschien een paar uurtjes kosten.

Onderstaand is de code die wat ik net heb geschreven, maar dit werkt dus maar half.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
function    rar_filelist($rarFile)
{
    $Files   =    array();
    $counter =    0;
    $Buffer  =    '';
    $inFile  =    false;
    $fd =    fopen($rarFile, 'rb');

    while(false !== ($string = fread($fd, 1024)) && !feof($fd))
    {
         $strlen = strlen($string);
         for($i = 0; $i < $strlen; $i++)
         {
            $char    =    $string{$i};
            if(!$inFile)
            {
                switch($counter)
                {
                    case    0:
                        if(ord($char) == 0x00)
                            $counter++;
                        else
                            $counter = 0;
                        break;

                    case    1:
                        if(ord($char) == 0x20)
                            $counter++;
                        else
                            $counter = 0;
                        break;

                    case    2:
                    case    3:
                        if(ord($char) == 0x00)
                            $counter++;
                        else
                            $counter = 0;
                        break;

                    case    4:
                        if(ord($char) == 0x00)
                            $inFile = true;
                        $counter = 0;
                        break;

                    default:
                        $counter = 0;
                }
            }
            else
            {
                if(ord($char) < 0x20 || ord($char) > 0x7E)
                {
                    $inFile  = false;
                    $Files[] = $Buffer;
                    $Buffer  = '';
                }
                else
                {
                    $Buffer .= $char;
                }
            }
        }
    }
    return    $Files;
}

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 14 April 2004 @ 09:55:
ok, thanx..
dat scheelt wel iets..

Mocht iemand een andere mogelijkheden hebben, dan hoor ik het graag..
** TOP SECRET ** UnRAR source code :7

http://www.rarlab.com/rar_add.htm


Edit: Let ook op, dat het opvragen van de inhoud van "grote" RAR-bestanden (met veel bestanden) best wel wat tijd kan vergen.

[ Voor 22% gewijzigd door Verwijderd op 14-04-2004 23:55 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 14 april 2004 @ 23:53:
[...]

** TOP SECRET ** UnRAR source code :7

http://www.rarlab.com/rar_add.htm


Edit: Let ook op, dat het opvragen van de inhoud van "grote" RAR-bestanden (met veel bestanden) best wel wat tijd kan vergen.
Dankje.. had deze pagina al gevonden.. Al een tijdje bezig geweest met de RCVT tool, en de normale unrar vor windows.. met die tweede kwam ik al iets verder.

Zijn eigenlijk allemaal .rar van maximaal 60 kb, dus het gaat allemaal redelijk snel.


@TumTum: mooie code, maar kan er zelf niet echt veel mee..
Wat ze bij RAR als bestandsindeling geven zegt mij erg weinig, in combinatie met jouw code.. Wat heb je hier geprobeerd te doen?

Acties:
  • 0 Henk 'm!

  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 01-09 10:26
Ik denk dat het makkelijkste is om mbv. shell_exec of zoiets unrar uit te voeren (ik ga er vanuit dat je linux/unix gebruikt):

code:
1
2
3
4
5
6
7
8
9
10
11
> unrar l *.rar

UNRAR 3.30 freeware      Copyright (c) 1993-2004 Eugene Roshal

Volume dinges.rar

 Name             Size   Packed Ratio  Date   Time     Attr      CRC   Meth Ver
-------------------------------------------------------------------------------
 dinges.bla 4551327744 49999905  --> 31-03-04 07:02   .....A   02E9BBCE m0g 2.0
-------------------------------------------------------------------------------
    1       4551327744 49999905   1%


Ik denk dat je dit dmv. een regex oid best kan verwerken?

Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat het makkelijkste is om mbv. shell_exec of zoiets unrar uit te voeren (ik ga er vanuit dat je windows gebruikt):

code:
1
2
3
4
5
6
7
8
9
10
c:\Program Files\WinRAR>unrar t -c- -idp rename.rar

UNRAR 3.30 freeware      Copyright (c) 1993-2004 Eugene Roshal


Testing archive rename.rar

Testing     rename.php                                                 OK
Testing     rename2.php                                                OK
All OK

Ik denk dat je dit dmv. een regex oid best kan verwerken?

[ Voor 9% gewijzigd door Verwijderd op 16-04-2004 01:13 ]


Acties:
  • 0 Henk 'm!

  • Tom-Eric
  • Registratie: Oktober 2001
  • Laatst online: 25-03 09:11
Verwijderd schreef op 15 april 2004 @ 11:24:
[...]


Dankje.. had deze pagina al gevonden.. Al een tijdje bezig geweest met de RCVT tool, en de normale unrar vor windows.. met die tweede kwam ik al iets verder.

Zijn eigenlijk allemaal .rar van maximaal 60 kb, dus het gaat allemaal redelijk snel.


@TumTum: mooie code, maar kan er zelf niet echt veel mee..
Wat ze bij RAR als bestandsindeling geven zegt mij erg weinig, in combinatie met jouw code.. Wat heb je hier geprobeerd te doen?
Wat ik heb gedaan is met een hex editor een rar file geopend en gekeken naar de plekken waar file names staan. Vervolgens heb ik een lijstje van deze files gepakt en gekeken naar bytes die gelijk waren voor en na de filename en daarna bovenstaande code geschreven.

i76 | Webdesignersgids | Online Gitaarlessen & Muziekwinkels


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 15 april 2004 @ 21:15:
Ik denk dat het makkelijkste is om mbv. shell_exec of zoiets unrar uit te voeren (ik ga er vanuit dat je windows gebruikt):

Ik denk dat je dit dmv. een regex oid best kan verwerken?
Ik maak in dit geval nog gebruik van een windows systeem ja.
Alleen de vraag was hoe dit uit te lezen onder PHP. (onafhankelijk van het onderliggende besturings-systeem)

Al kan ik waarschijnlijk wel wat met jouw code. Zal eens kijken of dit zonder problemen werkt.


TumTum.. bedankt voor je aanvullende uitleg..

We gaan weer eens verder :) Als ik wat verder ben post ik het wel.. Of als ik meer vragen heb natuurlijk :*)
Pagina: 1