Avatar billede encorez Nybegynder
12. december 2010 - 10:55 Der er 5 kommentarer og
1 løsning

ZIP-fil til array

Hej

Jeg har en funktion som virker i forvejen, hvor jeg kan uploade filer og disse behandler jeg en for en.
I den funktioner bruger jeg denne simple linie til at lægge filen indhold ind i $linier og derefter bruger jeg foreach() til at behandle linie for linie.
$linier = file($_FILES[$upload_name]['tmp_name']);

Jeg er nu ved at lave en tilsvarende funktion, hvor bare filerne er pakket i en ZIP-fil. Og på samme måde skal jeg have hver fils indhold ind i $linier som et array så jeg kan bruge foreach() (så jeg kan genbruge den kode som behandler indholdet).
Jeg har dette ind til videre.

$zip = zip_open("$filenavn");
if ($zip) {
while ($zip_entry = zip_read($zip)) {
  $filenavn = zip_entry_name($zip_entry);

  if (zip_entry_open($zip, $zip_entry, "r")) {
    $linier = file(bla bla) - HER SKAL JEG HAVE INDHOLDET IND I LINIER SOM ARRAY. Men "file" commandoen virker ikke her.
  }
}//WHILE
}//IF ZIP

Nogen der ved hvordan jeg gør det?
Avatar billede The_Buzz Novice
12. december 2010 - 11:56 #1
Avatar billede The_Buzz Novice
12. december 2010 - 11:59 #2
Damn jeg fatter ikke jeg missede at du brugte den allerede :/
Avatar billede The_Buzz Novice
12. december 2010 - 12:06 #3
Fandt lige en gammel code fragment:

$z = zip_open($_FILES[import][tmp_name]) or die("can't open file");

while ($entry = zip_read($z)) {
    $all_files = true;
    $entry_name = zip_entry_name($entry);

    // Hvis zips del er 0 byte lang skal den ignorere:
    if (zip_entry_filesize($entry)) {
          // Gør noget med zip content
    }
}
Avatar billede zynzz Praktikant
12. december 2010 - 14:59 #4
Et eksempel på php.net, hvor man benytter klassen ZipArchive..:
<?php
$zip = new ZipArchive;
if ($zip->open('items.zip'))
{
    for($i = 0; $i < $zip->numFiles; $i++)
    { 
          echo 'Filename: ' . $zip->getNameIndex($i) . '<br />';
    }
}
else
{
    echo 'Error reading zip-archive!';
}
?>
Avatar billede encorez Nybegynder
12. december 2010 - 15:11 #5
Hej
Jeg kan desværre ikke se den store forskel på det du skriver og det kode jeg allerede anvender.

Det jeg mangler er koden til at få indholdet fra hver fil ind i et array, på samme måde som når jeg uploade en alm fil. Og det kan jeg ikke umiddelbart se du giver eksempel på.

Det skal altså være noget magen til
$linier = file($_FILES[$upload_name]['tmp_name']);

Men det skal selvfølgelig virke sammen med koden når en ZIP-fil er pakket ud.
Avatar billede encorez Nybegynder
12. december 2010 - 21:07 #6
Jeg brugte nu blot explode("/n", $str) så fik jeg indholdet ind i arrayet :)
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