Cześć, nie mogę sobie poradzić z obsługą paczki rar wysłanej w formularzu przez użytkownika za pomocą ajaxa. Po pierwsze skontaktowałem się z hostingiem by zainstalowali na moim serwerze obsługę klasy RarArchive co zrobili. Niestety mimo wzorowania się na przykładach [http://php.net/manual/pl/rararchive.open.php] mój kod nie działa. Na początek załóżmy, że mam tylko jeden cel - policzyć ilość plików w tym archiwum. Zatem:
<?php
$file1_name = $_FILES["file1"]["name"];
$file2_name = $_FILES["file2"]["name"];
$file1_type = $_FILES["file1"]["type"];
$file2_type = $_FILES["file2"]["type"];
$file1_temp = $_FILES["file1"]["tmp_name"];
$file2_temp = $_FILES["file2"]["tmp_name"];
chmod($file1_temp, 0777);
chmod($file2_temp, 0777);
move_uploaded_file($file1_temp, "../upload/$file1_name");
move_uploaded_file($file1_temp, "../upload/$file2_name");
$ext1 = pathinfo($file1_name, PATHINFO_EXTENSION);
$ext2 = pathinfo($file2_name, PATHINFO_EXTENSION);
$imie = $_POST['imie'];
$email = $_POST['email'];
$mixing = $_POST['mixing'];
$mastering = $_POST['mastering'];
function feedback($error){
if($error==0) echo false;
if($error==1) echo "Pierwszy plik musi być paczką RAR!";
if($error==2) echo "Drugi plik musi być formatu WAV lub MP3!";
if($error==3) echo "Twoja paczka RAR nie mogła zostać odczytana!";
if($error==4) echo "Twoja paczka RAR jest pusta!";
if($error==5) echo "Wszystkie wysłane przez ciebie ścieżki powinny być identycznej wielkości!";
if($error==6) echo $ileplikow;
if($error==7) echo "W przesłanej przez ciebie paczce rar znajduje się folder zamiast plików WAV!";
exit();
}
if($mixing==1)
{
if(!($ext1=="rar")) feedback(1);
if(!($ext2=="mp3" || $ext2=="wav")) feedback(2);
$rar = RarArchive::open('../upload/'.$file1_name,NULL);
if($rar === FALSE) feedback(3);
$plikirar = $rar->getEntries();
$ileplikow = count($plikirar);
feedback(6);
if($ileplikow==1) feedback(7);
if(empty($plikirar)) feedback(4);
$pierwszy = false;
foreach ($plikirar as $plik)
{
if($pierwszy==false) $pierwszy = $plik->getUnpackedSize();
else if(!($pierwszy==$plik->getUnpackedSize())) feedback(5);
$shit=$plik->getName();
if((pathinfo($plik->getName(), PATHINFO_EXTENSION)=="wav")) feedback(6);
}
}
?>
Jak widać umyślnie po stworzeniu zmiennej $ileplikow kończę działanie skryptu by zwrócić tą ilość do js-a. Tam tworzę alert który ma ją wyświetlić lecz niestety wyświetla jedynie pustkę. Kolejne rzeczy które chcę zrobić a które nie działają będziemy rozpatrywać potem - po rozwiązaniu tego podstawowego problemu. Pragnę też dodać, że obecna wersja zawiera funkcję move_uploaded_file(); jedynie z braku laku lecz efekt daje taki sam.
Proszę o pomoc.