Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Obsługa RAR
Forum PHP.pl > Forum > PHP
Babcia@Stefa
Witam, piszę aplikację w stylu total commandera tylko że w PHP.

Teraz integruję zip, rar i tar z normalnym listingiem folderów (jak zip w windowsie), i mam kilka problemów.

  1. <?php
  2. public function GetFile($Name)
  3. {
  4. $Entry = rar_entry_get($this->Rar, $Name);
  5. $Entry -> extract('../Data/Temp/$RAR$' .base64_encode($Name). '.tmp');
  6. $Contents = file_get_contents('../Data/Temp/$RAR$' .base64_encode($Name). '.tmp');
  7. return $Contents;
  8. }
  9. ?>


Ten kod mi nie działa.

File_get_contents" title="Zobacz w manualu PHP" target="_manual wywala błąd, bo plik tymczasowy nie został utworzony przez funkcję extract.

Klasy do obsługi RAR, ZIP, TAR tworze po to dlatego że nie muszę później jakiś switchów, ifów używać tylko nazwy funkcji są takie same, tak samo z obsługą folderów i plików nie skompresowanych smile.gif

Dziękuję, Babcia@Stefa
legorek
Ponieważ, metoda extract jako pierwszy parametr przyjmuję nazwę katalogu do którego chcesz wypakować pliki, a ty podajesz nazwę pliku. Zobacz sobie:

  1. <?php
  2. $Entry -> extract('../Data/Temp/Rar');
  3. ?>



Jeśli chcesz wypakować dane do pojedynczego pliku zrób tak:


  1. <?php
  2. $Entry -> extract(false, '../Data/Temp/$RAR$' .base64_encode($Name). '.tmp');
  3. ?>
Babcia@Stefa
A więc rozwiązaniem nie było do końca to co powiedział legorek ponieważ RAR potrzebuje pełnej ścieżki do rozpakowania.

Zapamiętajcie że RAR POTRZEBUJE PEłNEJ ŚCIEŻKI DO ROZPAKOWANIA (TO PEWNIE CZĘSTY BŁĄD)

  1. <?php
  2. public function GetFile($Name)
  3. {
  4. // gets a resource
  5. $Entry = rar_entry_get($this->Rar, $Name);
  6. // get a path to script and change it
  7. $PathSave = str_ireplace('AjaxPages/RunFile.php', 'Data/Temp', $_SERVER['SCRIPT_FILENAME']);
  8. // extract and save result to $Test
  9. $Test = $Entry -> extract(false, $PathSave. '/$RAR$' .base64_encode($Name). '.tmp');
  10.  
  11. // check if $result is not false
  12. if($Test != false)
  13. $Contents = file_get_contents('../Data/Temp/$RAR$' .base64_encode($Name). '.tmp');
  14.  
  15. return $Contents;
  16. }
  17. ?>


Dziękuję, Babcia@Stefa
dr_bonzo
Cytat
A więc rozwiązaniem nie było do końca to co powiedział legorek ponieważ RAR potrzebuje pełnej ścieżki do rozpakowania.

Zapamiętajcie że RAR POTRZEBUJE PEłNEJ ŚCIEŻKI DO ROZPAKOWANIA (TO PEWNIE CZĘSTY BŁĄD)

Nie wymadrzaj sie tak, ok? Czestym bledem jest nie czytanie manuala i latanie z byle bledem na forum [tak jestem w k..urzony].
Babcia@Stefa
Cytat(dr_bonzo @ 14.07.2008, 13:20:02 ) *
Nie wymadrzaj sie tak, ok? Czestym bledem jest nie czytanie manuala i latanie z byle bledem na forum [tak jestem w k..urzony].



Co się tak czepiasz?
Niby skąd wiem o tych funkcjach jak nie z manuala?

Tylko wstawiam sensowną informację.
Może ktoś ma ten sam problem, lub będzie mieć wkrótce?
kwiateusz
co nie zmienia faktu ze w manualu w przykladzie #2 jest użyta pełna sciezka więc dr_bonzo ma racje z niedokładnym czytaniem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.