Avatar billede encorez Nybegynder
09. december 2010 - 20:51 Der er 5 kommentarer og
1 løsning

Unzip fil på server

Hejsa

Jeg forsøger at lave et simpelt script der skal uploade en enkelt zip-fil til server. Der skal den så pakkes ud så jeg kan behandle hver fil i den.

Jeg forsøger mig med denne kode

<form action="" method="post" enctype="multipart/form-data">
<input name="uploadFile" type="file" id="uploadFile">
<input type="submit" value="Start" name="test" />
</form>

if($_POST[test]){
$filenavn = $_FILES['uploadFile']["name"];

    $za->open('$filenavn');
print_r($za);
var_dump($za);
echo "numFiles: " . $za->numFiles . "\n";
echo "status: " . $za->status  . "\n";
echo "statusSys: " . $za->statusSys . "\n";
echo "filename: " . $za->filename . "\n";
echo "comment: " . $za->comment . "\n";

for ($i=0; $i<$za->numFiles;$i++) {
    echo "index: $i\n";
    print_r($za->statIndex($i));
}
}

Men jeg får fejlen
Fatal error: Call to a member function open()

Hvad er det lige jeg gør forkert for at jeg ikke kan åbne den?
Jeg prøver at følge eksempel 2 fra php.net
http://dk.php.net/manual/en/zip.examples.php
Avatar billede intenz Novice
09. december 2010 - 21:05 #1
Har du husket at instantiere ZipArchive objektet? Det fremgår ikke af dine kode, du bruger bare $za variablen.

$za = new ZipArchive();
Avatar billede encorez Nybegynder
09. december 2010 - 21:24 #2
Du har ret. Det havde jeg ikke. Nu finder den et objekt, men det er stadig som om den ikke tager fat i den zip-fil jeg uploder. Jeg får blot dette skrevet ud

ZipArchive Object ( [status] => 0 [statusSys] => 0 [numFiles] => 0 [filename] => [comment] => ) object(ZipArchive)#1 (5) { ["status"]=> int(0) ["statusSys"]=> int(0) ["numFiles"]=> int(0) ["filename"]=> string(0) "" ["comment"]=> string(0) "" } numFiles: 0 status: 0 statusSys: 0 filename: comment:

Nogen forslag?
Avatar billede intenz Novice
09. december 2010 - 22:06 #3
Du bruger:
$_FILES['uploadFile']["name"];

Den giver dig bare filnavnet som blev uploadet, ikke den til der ligger på serveren. Når du uploader bliver den gemt i en midlertidig mappe, du kan prøve et tilgå den derfra.
$_FILES['uploadFile']["tmp_name"];

Ellers skal du bruge:
http://php.net/manual/en/function.move-uploaded-file.php

for først at gemme filen på serveren, hvorefter du så kan arbejde med den.
Avatar billede encorez Nybegynder
09. december 2010 - 22:29 #4
Jeg har også prøvet med tmp_name, men der giver den heller ikke noget.

Det burde ikke være nødvendigt at bruge move. Jeg bruger et andet simpelt script på samme server hvor jeg uploader en simpel tekst fil og behandler og der gør jeg blot sådan
$linier = file($_FILES['uploadFile']["tmp_name"]);

Men nu prøvede jeg eksempel her fra
http://dk.php.net/manual/en/zip.examples.php
der står godt nok det er fra PHP 4, men det virker!! :)

Så med mindre du har et forslag til at få det andet til at virke uden at bruge Move, så holder jeg mig blot til denne.

Læg et svar som tak for hjælpen
Avatar billede intenz Novice
10. december 2010 - 10:42 #5
Det undrer mig den anden ikke virker så. Jeg kan se flere steder på nettet hvor $_FILES['uploadFile']["tmp_name"] bare er smidt i open metoden.

Men hvis PHP4 eksemplet virker, så brug bare det :)
Avatar billede encorez Nybegynder
12. januar 2011 - 14:27 #6
Det kom til at virke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester